我只是想知道如何在C中创建一个字节数据包。我需要一个这样的数据包:
类型: Unisgned Char 1 byte
名称:字符7字节
Mac:字符13字节
随机数:字符7字节
数据:字符50字节
这是一个带有1个字节字符的结构,但问题是大小:
struct PDU{
unsigned char code;
char name;
char mac;
char RNumber;
char data;
}
我怎样才能改变字符的大小?
由于
答案 0 :(得分:0)
您无法更改char
的大小 - 但可以为每个项目创建char
个列表的长度(这些称为“数组”):
struct PDU{
unsigned char code;
char name[7];
char mac[13];
char RNumber[7];
char data[50];
};
小心结构填充:C编译器可以在每个项之间添加填充字节。它可能会这样做,因为访问“字对齐”数据通常比“任何字节”更快。您可以通过在此结构之前添加特殊的编译器指令来指示编译器不这样做,通常(检查编译器手册!)类似
#pragma pack(1)
如果在此之后还有其他结构定义不需要删除其填充,请再次查找恢复正常服务的指令,并将其添加到此结构定义下面。
将数据复制到此结构时,绝对至关重要,您不会复制“越界”并覆盖下一项中的数据。 (这适用于C中的所有程序,但我可能会再次提及它。)