0

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

我写了这段代码
来确定我的处理器是小端还是大端......
我输入

0102030405060708 (this is in hex) 

并希望得到08and 07and and 06and...01作为答案

而是得到了0and 25and 50and and and and -125and -13and 501and -41and 66
当我将's'作为2字节(短)编写相同的代码时,输​​出010221(与小端一致)......那么这里出了什么问题?

4

2 回答 2

3

您将输入值存储为 a double,它将值存储为浮点值。尝试使用 along long代替,它是一个 64 位整数,并且应该按照您的预期存储该值。

于 2012-04-08T12:18:44.467 回答
2

将十六进制数字带入 a(double)不太可能达到您的预期;它是一个浮点值,由以 2 为底的尾数和指数组成。您可能会找到(long)(long long)更接近您的意图。

于 2012-04-08T12:18:36.307 回答