C++ 从struct到char的转换问题*
我有一个大小为57字节的结构,但当我转换为char*时,char*变量的大小仅显示4字节。这有什么问题 代码: 编辑:C++ 从struct到char的转换问题*,c++,type-conversion,winsock2,C++,Type Conversion,Winsock2,我有一个大小为57字节的结构,但当我转换为char*时,char*变量的大小仅显示4字节。这有什么问题 代码: 编辑: 在接收方,如果字符*被键入数据包*,则支柱成员不会获得在发送方分配的值。为什么会这样?char*是指针(即内存地址),因此将是32位(在32位平台上);4字节。char*是指针(即内存地址),因此将是32位(在32位平台上);4字节。pack是指向字符的指针。32位平台上指针的大小为4字节。如果需要pack指向的数据长度,请尝试。pack是指向字符的指针。32位平台上指针的大小
在接收方,如果字符*被键入数据包*,则支柱成员不会获得在发送方分配的值。为什么会这样?char*是指针(即内存地址),因此将是32位(在32位平台上);4字节。char*是指针(即内存地址),因此将是32位(在32位平台上);4字节。
pack
是指向字符的指针。32位平台上指针的大小为4字节。如果需要pack
指向的数据长度,请尝试。pack
是指向字符的指针。32位平台上指针的大小为4字节。如果需要pack
指向的数据长度,请尝试。char*
位于32位机器4字节上。所以sizeof(char*)
==4。如果需要长度,可以使用sizeof(packet)
,请参阅
此外,您应该考虑序列化数据包。
<代码> CHAR*<代码>是一个32位的机器4字节。所以
sizeof(char*)
==4。如果需要长度,可以使用sizeof(packet)
,请参阅
此外,您应该考虑序列化数据包。因为在32位系统中,char *的大小是4字节……结构指针的大小与结构的大小不一样。您可能需要sieof(包),并且必须将数据格式化为在另一端预期的格式。<代码> sieZof(char)有什么问题?
4岁?你到底期望什么?为什么?因为在32位系统上,char*的大小是4字节…指向struct的指针的大小与sizeof struct的大小不一样你可能想要sizeof(packet),你必须将数据格式化为另一端所期望的格式。sizeof(char*)
为4有什么问题?你到底期望什么,为什么?
struct overhead{
unsigned char flags;
unsigned short int seqNo, timeDiff, threshold, length;
};
struct payload{
double forceX,forceY,forceZ,positionX,positionY,positionZ;
};
struct packet{
overhead fields;
payload data;
};
packet pack;
// Assigning some values to the struct members.
char * message = (char *)pack;
retval = send(conn_socket, message , sizeof(message), 0);