English 中文(简体)
如何从长十六进制字符串创建Python字节对象?
原标题:
  • 时间:2009-01-14 17:42:50
  •  标签:

我有一个包含十六进制数字长序列的字符串,例如

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)

那是我这样做的方式。





相关问题
热门标签