2013-04-04 91 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