【发布时间】:2012-11-07 21:13:52
【问题描述】:
尽管大端计算机的使用不是很广泛,但我想以独立格式存储双精度数据类型。
对于 int,这真的很简单,因为位移非常方便。
int number;
int size=sizeof(number);
char bytes[size];
for (int i=0; i<size; ++i)
bytes[size-1-i] = (number >> 8*i) & 0xFF;
此代码片段以大端格式存储数字,尽管它正在运行的机器上。 什么是最优雅的方式为双打?
【问题讨论】:
-
使用浮点,您不仅需要担心字节顺序,还需要担心格式。你能安全地采用 IEEE 754 格式吗?
-
是的,让我们这么说吧:) 谢谢你的评论。
-
顺便说一句,对于您的
int情况,使用(number >> (8 * i)) & 0xFF会更简单。 -
注意,“char”的大小可能不同于 8 位。 std::numeric_limits
::digits -
至少是 8,所以在这种情况下,这不会影响我们。谢谢。
标签: c++ endianness