2016-03-15 44 views
-1

我試圖手動從十六進制構建一個字節:我怎麼能把十六進制字符串放入字節?

>>> '\x74' 
't' 
>>> hex(116) 
'0x74' 
>>> hex(116)[1:] 
'x74' 
>>> '\\' + hex(116)[1:] 
'\\x74' 
>>> 

是否有可能創建一個只\x74爲字節?

不使用魔術與chr()

>>> chr(int(hex(116), 16)) 
't 
+1

你是什麼意思 「的字節」? Python中沒有「字節」類型。您可以創建長度爲1的[bytearray](https://docs.python.org/2/library/functions.html#bytearray),或者一個字節串(即非Unicode字符串)。如果你想這樣做,'chr'不是「魔術」;它是做你正在做的事情的功能。 – BrenBarn

+0

@BrenBarn作爲''\ x74''這是'str'(實際上是python2.7中的字節)。 –

+2

你已經創建的字符串是'\ x74'。它只是顯示兩個反斜槓,因爲它顯示的方式。如果你使用print('\\'+ hex(116)[1:])',你會看到它只有一個反斜槓。但這不是「一個字節」;它是一個包含四個字符的字符串。 – BrenBarn

回答

1

你也可以做一些類似'74'.decode('hex')

輸出:

>>> '74'.decode('hex') 
't' 
+0

注意:不建議使用帶「str.decode」/「str.encode」的「特殊」編解碼器,並且在Py3中不起作用。你必須使用['codecs'模塊方法來使用binary-> binary「decode」/「encoding」](https://docs.python.org/3/library/codecs.html#binary-transforms)。 – ShadowRanger

0

也許你正在尋找struct.pack

In [210]: import struct 

In [211]: struct.pack('1B', 0x74) 
Out[211]: 't' 
相關問題