我只是想知道如何在 C 中创建字节数据包。我需要这样的数据包:
类型: Unisgned Char 1 字节
名称:字符 7 字节
Mac:字符 13 字节
随机数:字符 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 语言程序,但我不妨再次提及。)
关于c - 如何在 C 中创建字节数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36383312/