首页 文章

big endian vs little endian

提问于
浏览
0

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

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

0102030405060708 (this is in hex)

并希望得到 080706 以及...和 01 作为答案

但取而代之的是 02550 以及 -125-13 以及 501-41 以及 66 .
当我用's'作为2字节(短)编写相同的代码时, 0102 的输出是 21 (这与小端一致)...所以这里出了什么问题?

2 回答

  • 3

    您将输入值存储为 double ,它将值存储为floating point值 . 尝试使用 long long 而不是64位整数,并且应该按预期存储该值 .

  • 2

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

相关问题