我有一個函數UartSend()通過UART發送數據到網絡。它需要的參數無符號的字符和一個整數轉換C結構爲無符號字符
UartSend(unsigned char *psend_data,int length);
我想通過這個功能
#pragma pack(push, 1)
struct packet
{
int a;
char b[3];
...
}PacketData;
#pragma pack(pop)
發送結構如何隱蔽這種結構爲unsigned char通過UartSend發送這些數據? 感謝..
你嘗試只是鑄造'packet'到'無符號字符*'?它可能會在你的情況下有對齊問題.. – 2013-02-22 07:35:21
決定你想要的數據格式。這被稱爲*協議*。在你的情況下,你可能想要將數據作爲32位或64位的大端整數發送,然後是三個字符。你將「建立」這個數據到一個緩衝區,然後發送它。客戶端將收到此信息,然後從數據中重建原始結構。發送直播可能會引入大量的對齊和打包問題,這些問題實際上是您想要避免的,特別是如果客戶端可以運行不同的平臺或與發送方具有不同的內存架構。 – WhozCraig 2013-02-22 07:41:44