在 beej 的网络指南中,有一节是为序列化编码或打包数据,他在其中描述了打包和解包数据的各种函数(int、float、double ..等)。
使用下面定义的 union(类似于可以为 float 和 double 定义)并将 integer.pack 作为 integer.i 的打包版本传输比 pack 和 unpack 函数更容易。
union _integer{
char pack[4];
int i;
}integer;
有人可以阐明为什么 union 是一个糟糕的选择吗?
有没有更好的打包数据的方法?
最佳答案
不同的计算机可能会以不同的方式排列数据。经典问题是字节顺序(在您的示例中,包 [0] 是否具有 MSB 或 LSB)。使用这样的 union 将数据与生成它的计算机上的特定表示联系起来。
如果您想了解其他编码数据的方法,请查看 Boost serialization和 Google protobuf .
关于c++ - 编码或打包可以由 union 来实现吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2337061/