ntohl
需要uint32_t
。我有许多不同成员的消息(类型为uint32_t
或uint16_t
)。是否可以正确传递收到的所有struct
或union
并将其转换为uint32_t
然后reinterpret_cast
转换为union
或{{1} }}?
我一直在做的是逐行列出struct
或union
的每个成员,并将其传递给ntohl / s,就像这样struct
但是很麻烦!
数据结构从C#.NET应用程序(Windows)整体传输到Linux应用程序。
当我尝试时,
msg.member = ntohl(msg.member);
编译器抱怨说:
错误:从'void *'转换为'uint32_t'会失去精度
答案 0 :(得分:6)
uint32_t
变量的情况下。
此外,您必须根据不同的变量大小使用不同的ntoh<X>
函数。
答案 1 :(得分:0)
您可以使用Google的Protocol Buffers。