2010-02-03 63 views
0

我想從大翻轉到小尾數字符串:翻轉字節

\x00\x40

有這樣的:

\x40\x00

我想正確的函數使用將是struct.pack,但我找不到一個方法使其正常工作。 小小的幫助將非常感激!

感謝

回答

6

你不顯示整個代碼,因此最簡單的解決辦法是:

data = data[1] + data[0] 

如果你堅持要用struct

>>> from struct import pack, unpack 
>>> unpack('<H', '\x12\x13') 
(4882,) 
>>> pack('>H', *unpack('<H', '\x12\x13')) 
'\x13\x12' 

哪個先拆包字符串作爲小尾端無符號短符號,然後將其打包爲大尾符號無符號短符號。當然,你可以用另一種方式。在BE和LE之間轉換時,轉換方式無關緊要 - 轉換功能是雙向的。

0

little_endian = big_endian[1] + big_endian[0]

5

data[::-1]適用於任何數量的字節。

+1

我認爲這是一個更好的方式來做到這一點。 – 2010-02-03 05:11:11

0

我可以想象,真正要做的是將輸入數據從大端(或網絡)字節序轉換爲您的主機字節序(無論可能)。

>>> from struct import unpack 
>>> result = unpack('>H', '\x00\x40') 

這將不僅僅是一個交換更便攜的方式,這勢必當代碼移動到大端機器,不需要在所有交換失敗。