ntohl
需要一个uint32_t
. 我有许多不同成员(类型为uint32_t
or uint16_t
)的消息。是否可以正确传递整个收到的struct
orunion
并将其转换为 sayuint32_t
然后reinterpret_cast
转换为 my union
or struct
?
我的做法是逐行列出union
or的每个单独成员,struct
然后像这样将其传递给 ntohl/s,msg.member = ntohl(msg.member);
但这很麻烦!
数据结构从 C# .NET 应用程序 (Windows) 整体传输到 Linux 应用程序。
当我尝试时,
void* ptr = &msg;
uint32_t temp = (uint32_t)ptr;
编译器抱怨说:
错误:从 'void*' 转换为 'uint32_t' 失去精度