【发布时间】:2012-04-08 12:12:05
【问题描述】:
我在 64 位英特尔处理器上工作...我正在学习大端和小端,我的理解是这些是一个字中的字节顺序,因此在 64 位数据中,msb 将在大端中具有最低地址endian 形式和 little endian 形式的最高地址...现在我有一个问题:
我写了this code
确定我的处理器是小端还是大端...
我输入
0102030405060708 (this is in hex)
并希望得到08和07和06和...和01作为答案
但是得到了0和25和50和-125和-13和501和-41和66。
当我编写以 's' 为 2 字节(短)的相同代码时,0102 的输出为2 和1(与小端一致)...那么这里出了什么问题?
【问题讨论】:
-
当你写你的问题时,请注意它显示了它的外观预览。请使用它来确保您的问题看起来可读。谢谢你:)
-
你认为代表 0x0102030405060708 的 double 的位码是什么?
-
请参阅here,了解包含查找字节序的方法的问题。
-
char 是有符号类型。如果您不想要负数,请使用 unsigned char。
-
我投票结束这个问题,因为代码不包括在内并且链接已过期
标签: c++ endianness