big endian vs little endian

时间:2012-04-08 12:12:06

标签: c++ endianness

我在64位英特尔处理器上工作...我正在学习大端和小端,我理解的是这些是一个字内的字节排序,这样在64位数据中,msb将具有最大的地址endian形式和小端形式的最高地址......现在我有一个问题:

我写了this code
确定我的处理器是小端还是大端... 我输入了

0102030405060708 (this is in hex) 

并希望得到0807以及06和......以及01作为回答

但取而代之的是025以及50-125以及-13501以及-41和{{ 1}}。
当我编写相同的代码时,'s'为2字节(短),66的输出为01022(这与小端有关)......所以这里出了什么问题?

2 个答案:

答案 0 :(得分:3)

您将输入值存储为double,将值存储为floating point值。尝试使用long long代替,这是一个64位整数,并且应该按预期存储该值。

答案 1 :(得分:2)

将十六进制数转换为(double)不太可能达到预期效果;它是一个由基数2尾数和指数组成的浮点值。您可能会发现(long)(long long)更接近您的预期。