2016-07-06 45 views
0

到字節2字節的陣列我轉換長或INT使用結構蟒龍使用結構

BA = struct.pack( 'H',12)

輸出在Python字節組:「\ X0C \ X00' 長度2個字節

,但如果我轉換 BA = struct.pack( 'H',12345)

輸出: '90' 我需要編碼爲十六進制爲期望的出放 BA .encode('hex') 在這種情況下輸出是 輸出:3930 和長度是4

爲什麼發生這種情況,它應該給2字節的結果沒有編碼?

我的用例是我需要將長轉換爲期望的bytearray大小的bytearray。

+0

我真的不明白你的成就是什麼。你想用輸入'12'獲得'b「0c00」'嗎? – kazbeel

+0

實際上,我想創建一個通用函數,輸入爲long,輸出爲2字節的字節數組,如果我的輸入爲12,輸出爲'\ x0c \ x00',長度爲2字節,但是當我給出時輸入爲12345,即<2 ** 16 - 1(可容納兩個字節)輸出爲'90',也是兩個字節,但我期待輸出爲'0x3039'只是想知道爲什麼函數返回不同的情況下輸入爲12345 – atulthree

回答

0

'90'是兩個字節。第一個字節是0x39,第二個是0x30。

>>> hex(12345) 
'0x3039' 

TL; DR:你得到正確的結果。