我有一个包含十六进制数字长序列的字符串,例如
000000000000484240FA063DE5D0B744ADBED63A81FAEA390000C8428640A43D5005BD44 十六进制编码,暂无法翻译。
只是要长得多,几千字节。在Python 2.6/3中有内置的方法将其转换为bytes对象吗?
我有一个包含十六进制数字长序列的字符串,例如
000000000000484240FA063DE5D0B744ADBED63A81FAEA390000C8428640A43D5005BD44 十六进制编码,暂无法翻译。
只是要长得多,几千字节。在Python 2.6/3中有内置的方法将其转换为bytes对象吗?
result = bytes.fromhex(some_hex_string)
适用于Python 2.7及更高版本,包括Python3:
result = bytearray.fromhex( deadbeef )
注意:Python 2.6 中 bytearray.fromhex()
函数存在一个错误。python.org 的文档说明此函数接受字符串作为参数,但实际使用时会报以下错误:
>>> bytearray.fromhex( B9 01EF )
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: fromhex() argument 1 must be unicode, not str`
你可以使用十六进制编解码来完成这个。例如:
>>> s= 000000000000484240FA063DE5D0B744ADBED63A81FAEA390000C8428640A43D5005BD44
>>> s.decode( hex )
x00x00x00x00x00x00HB@xfax06=xe5xd0xb7Dxadxbexd6:x81xfaxea9x00x00xc8Bx86@xa4=Px05xbdD
试试binascii模块。
from binascii import unhexlify
b = unhexlify(myhexstr)
import binascii
binascii.a2b_hex(hex_string)
那是我这样做的方式。