[英]How can I create a byte packet in C?
我只是想知道如何在 C 中創建一個字節數據包。我需要一個這樣的數據包:
類型: Unsigned Char 1 字節
名稱:字符 7 字節
Mac:字符 13 字節
隨機數: Char 7 字節
數據:字符 50 字節
這將是一個具有 1 字節字符的結構,但問題是大小:
struct PDU{
unsigned char code;
char name;
char mac;
char RNumber;
char data;
}
我怎樣才能改變字符的大小?
謝謝
您無法更改char
的大小 - 但您可以為每個項目制作足夠長的char
列表(這些稱為“數組”):
struct PDU{
unsigned char code;
char name[7];
char mac[13];
char RNumber[7];
char data[50];
};
注意結構填充:C 編譯器可以隨意在這些項之間添加填充字節。 這樣做可能是因為訪問“字對齊”數據通常比“任何字節”更快。 您可以通過在此結構之前添加特殊的編譯器指令來指示編譯器不要這樣做,通常(檢查您的編譯器手冊!)類似
#pragma pack(1)
如果在此之后還有其他不需要刪除填充的結構定義,請再次查找恢復普通服務的說明,並將其添加到此結構定義下方。
將數據復制到此結構中時,絕對重要的是不要復制“越界”並覆蓋下一項中的數據。 (這適用於所有 C 語言程序,但我不妨再提一次。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.