[英]Using ntohl on Struct or Union
ntohl
使用uint32_t
。 我有许多不同成员的消息(类型为uint32_t
或uint16_t
)。 是否可以正确传递整个接收到的struct
或union
并将其转换为uint32_t
,然后reinterpret_cast
转换为我的union
或struct
?
我一直在做的工作是逐行列出并union
或struct
每个单独成员,并将其传递给ntohl / s,例如msg.member = ntohl(msg.member);
但这很麻烦!
数据结构全部从C#.NET应用程序(Windows)传输到Linux应用程序。
我尝试的时候
void* ptr = &msg;
uint32_t temp = (uint32_t)ptr;
编译器抱怨:
错误:从'void *'转换为'uint32_t'会失去精度
不,你不能。 仅在您的结构仅包含一个uint32_t
变量的情况下。 此外,必须根据变量大小使用不同的ntoh<X>
函数。
您可以使用Google的协议缓冲区 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.