十字形的大端和小端

时间:2014-04-15 09:55:45

标签: assembly cpu-registers endianness

我需要在32位寄存器中打印该值。可以进行各种打印设置。该程序应支持显示为小端或大端以及十六进制或十进制。我对字节序的概念感到很困惑。

例如,如果寄存器中的值是0x1000FFE7。如果打印设置是大端和十六进制,我打印为E7FF0010,如果它是小端,我按原样打印。打印设置是十进制的怎么样?

我正在做的是以十六进制转换为大端,然后找到相应的小数并打印出来。这看起来是否正确?或者是否在十进制的情况下无关紧要?

2 个答案:

答案 0 :(得分:2)

十进制表示也受字节顺序的影响。您需要进行的转换与十六进制显示相同(因此,重新排序字节,然后照常打印)。

更一般地说,代码取决于您的主机系统。它只能在小端系统上运行,然后你是对的,但一般来说你需要改变顺序,如果打印的endiannes与运行的系统代码的字节顺序不一样。

答案 1 :(得分:0)

您使用的是哪种计算机语言? 通常,与大端字节中的较高字节相比,小端存储首先降低字节。 请参阅http://en.wikipedia.org/wiki/Endianness