2013-04-04 87 views
-1

我想找到字符翻转功能的区别,因为我在程序员的视图中看到计算器在Mac上。字节翻转和字节交换之间的差异

因此,我写了一个程序,以字节交换值,我们要做的从小到大排序或其他方式,我把它称为字节交换。但是当我看到字节翻转时,我不明白它到底是什么,它与字节交换有什么不同。我确实证实了结果是不同的。

例如,对于具有值的int 12976128

字节翻转给我198; 字节交换给了我50688.

我想实现一个字节翻转的算法,因为198是我想要读取的东西的值。谷歌上的任何东西都说字节翻转发现帮助字节交换不是我的情况。

+3

转换你的号码为十六进制,这将是明显的。 12976128 = 0xC60000,198 = 0xC6,50688 = 0xC600 – TJD 2013-04-04 19:35:02

回答

2

字节翻转和字节交换是同义词。

您看到的结果只是交换字节的两种不同方式,具体取决于您将数字视为32位数字(由4个字节组成),还是作为可容纳12976128的数字的最小大小,即24位或3字节。

由于32位处理器目前占主导地位(甚至64位架构仍然以32位数字完成大部分数学运算,部分原因在于后向兼容的软件基础架构,部分原因在于它足以满足许多实际需要目的)。但Mac计算机似乎使用最小宽度的交换,在这种情况下是3字节交换。

12976128,当转换为十六进制时,给你0xC60000。总共3个字节;每个十六进制数字是4位或半个字节宽。要交换的字节是0xC6,零和另一个零。

3byte交换之后:0x0000C6 = 198

4个字节的交换之后:0x0000C600 = 50688