簡體   English   中英

從struct轉換為char的問題*

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM