繁体   English   中英

在Struct或Union上使用ntohl

[英]Using ntohl on Struct or Union

ntohl使用uint32_t 我有许多不同成员的消息(类型为uint32_tuint16_t )。 是否可以正确传递整个接收到的structunion并将其转换为uint32_t ,然后reinterpret_cast转换为我的unionstruct

我一直在做的工作是逐行列出并unionstruct每个单独成员,并将其传递给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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM