[英]Issue with Conversion from struct to char *
我有一個大小為57字節的結構,但是當我轉換為char *時,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);
編輯:
在接收方,如果將char *類型轉換為數據包*,則strut成員不會獲得發送方分配的值。 為什么會這樣呢?
char *是一個指針(即一個內存地址),因此將是32位(在32位平台上); 4字節。
char*
在32位機器的4字節上。 因此sizeof(char*)
==4。如果您想要長度,可以使用sizeof(packet)
,請參見此處 。
另外,您應該考慮序列化數據包。
pack
是指向char
的指針。 在32位平台上,指針的大小為4個字節。 如果要pack
指向的數據長度,請嘗試strlen 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.