用较少的数字转换为小端

时间:2016-03-12 22:13:20

标签: math endianness

当你看到像0x8048cc54 -> \x54\xcc\x48\x80这样的东西时,小端是很简单的。如果你想将这些转换为8字节,你会怎么做呢?0x8048cc4或0x8048cc怎么样?如果这是错误的论坛,那就让我知道并且不好意思。

2 个答案:

答案 0 :(得分:1)

这取决于您的值的容器(内存大小)。如果(如第一个示例中那样)该值被视为32位,您只需要查看它的“全范围”:

0x8048cc4 == 0x08048cc4
0x8048cc  == 0x008048cc

从这里转换endianess的答案很简单......

答案 1 :(得分:1)

“Endianness”就是您编写数字的顺序。

世界上大多数人都用big endian写东西;最重要的数字首先出现在最后一个最不重要的位置:

123 = 100 + 20 + 3(= 1×10²+ 2×10¹+ 3×10⁰)

然而,从计算机的角度来看,从另一端看它通常很有用:

321 = 3 + 02 + 001(= 3×10⁰+ 2×10¹+ 1×10²)

计算机中数字的“数字”由值0..255组成 - 也就是说,每个数字都是一个字节。我们人类没有256个不同的符号来写入该字节值,因此我们将其从基数256转换为基数16。

要以小端编写,从最低有效字节开始并剥离,直到用完字节/数字为止:

0x0848cc4 - > \ XC4 \ x8c \ X84 \ X00

0x8048cc - > \ XCC \ X48 \ X80 \ X00

希望这有帮助。