如果我们有一个 POD 结构说 A,我这样做:
char* ptr = reinterpret_cast<char*>(A);
char buf[20];
for (int i =0;i<20; ++i)
buf[i] = ptr[i];
network_send(buf,..);
如果接收端远程框不一定是相同的硬件或操作系统,我可以安全地执行此操作以“反序列化”:
void onRecieve(..char* buf,..) {
A* result = reinterpret_cast<A*>(buf); // given same bytes in same order from the sending end
“结果”会一直有效吗?C++ 标准规定 POD 结构,reinterpret_cast 的结果应该指向第一个成员,但这是否意味着实际的字节顺序也正确,即使接收端是不同的平台?