c - 如何发送带有填充字段的结构?

标签 c

我有一个 12 字节的数据包要发送,格式如下:

+--------+------+
| ID     | ver  |
+--------+------+

ID is 8 bytes and ver is 4 bytes. I have declared a struct as below but my PC gives me a size value of 16 bytes (8 + 4 + 4 byte of padding). #pragma solved the problem, but is there any way to solve the issue?

struct pak
{
  char *ID;
  uint32_t ver;
};

最佳答案

最通用、可移植和防错的解决方案是根本不关心填充。

您可以使用memcpy 将结构序列化和反序列化为字符数组,而不是按原样发送结构。

在向其他设备发送数据时,您不应该忘记字节顺序 - 请参阅ntohlntohs 的文档以了解详细信息。

关于c - 如何发送带有填充字段的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14068928/

相关文章:

c - C中的字符链表

c - 在 char 变量中查找唯一 '1' 位的索引的最有效方法(在 C 中)

从 char 转换为 short,结果奇怪?

c++ - 如何使用 gettimeofday() 获取运行时间?

c - 我如何分发(开源)Vala 项目?

C 打开文件检查它是否是二进制文件,如果是则打印它是二进制文件

python - 编译用于 mac OSX 10.8 上的 python 包装器的 C 库

c - 获取Socket使用的本地端口

c - 运行存储在动态允许的内存中的 shellcode

c - 全局数组或 "array"的 '#define' 的替代品?