Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从struct到char的转换问题*_C++_Type Conversion_Winsock2 - Fatal编程技术网

C++ 从struct到char的转换问题*

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位平台上指针的大小

我有一个大小为57字节的结构,但当我转换为char*时,char*变量的大小仅显示4字节。这有什么问题

代码:

编辑:


在接收方,如果字符*被键入数据包*,则支柱成员不会获得在发送方分配的值。为什么会这样?

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);