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

foo*_*o_l 1 c

我有一个12字节的数据包要发送的形式:

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

ID是8个字节,ver是4个字节.我已经声明了一个结构如下,但我的PC给了我一个16字节的大小值(8 + 4 + 4字节的填充).#pragma解决了这个问题,但有什么方法可以解决这个问题吗?

struct pak
{
  char *ID;
  uint32_t ver;
};
Run Code Online (Sandbox Code Playgroud)

Raf*_*cki 5

最通用,便携和防错的解决方案是根本不关心填充.

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

你不应该忘记的存储方式将数据发送到其他设备-见文档ntohlntohs详细信息.