我有一个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)
最通用,便携和防错的解决方案是根本不关心填充.
您可以使用,例如,将结构序列化和反序列化为字符数组,而不是按原样发送结构memcpy.
你不应该忘记的存储方式将数据发送到其他设备-见文档ntohl和ntohs详细信息.