對於特定需要我建立一個四個字節整數出四個一字節字符,使用沒有什麼太特別的(在我的小端平臺):在big-endian機器中對little-endian整數進行簡單的按位操作?
return ((v1 << 24) | (v2 << 16) | (v3 << 8) | v4);
我知道,存儲在大端整數機器看起來像AB BC CD DE
,而不是DE CD BC AB
的小端排列,雖然它會影響我的操作完全是因爲我將錯誤地移位,還是隻會導致正確的結果存儲在相反的位置,並且需要顛倒?
我想知道是否要創建此函數的第二個版本來處理大端機器的位操作,或者可能使用與ntonl相關的函數,但我不清楚如何知道我的編號是否正確。
你會有什麼建議來確保兼容性,牢記我需要以這種方式形成整數?
這證實了我原先曾經想過的事情,因爲這種轉換可能是多餘的,因爲它還沒有存儲。謝謝。 – Alexander 2011-04-13 00:08:21
其原因是因爲寄存器通常不被認爲是一種排序或另一種排序。幾乎所有的(全部?)體系結構,甚至是像x86這樣的小端形式的體系結構都使得寄存器的最左邊的位成爲MSB,最右邊的LSB(右邊和左邊被定義爲方向位左移或右移)。 – user470379 2011-04-13 00:17:53
我非常感謝你對你的意見。這回答了我需要知道的關於這個主題的所有內容,甚至在編寫這些功能時甚至不用關心什麼。 – Alexander 2011-04-13 00:32:06