在Python中将转义的十六进制字符串转换为十六进制数字

时间:2014-11-09 23:42:44

标签: python string hex

如何将一串转义的十六进制字符转换为单个十六进制数?

从套接字读取我得到一个字符串\ xFF \ xFF \ xFF ..等。我想将其转换为十六进制数0xFFFFFF,保持任何无关紧要的0,所以\ x00 \ xFF应该是0x00FF。我尝试过binascii的各种功能,但我没有运气。

1 个答案:

答案 0 :(得分:3)

使用struct.unpack

>>> struct.unpack('>I', '\xFF\xFF\xFF\xFF')  # >, !: big (network) endian
(4294967295,)
>>> hex(struct.unpack('>I', '\xFF\xFF\xFF\xFF')[0])
'0xffffffff'

>>> struct.unpack('>H', '\x00\xff')
(255,)
>>> '0x{:04x}'.format(struct.unpack('>H', '\x00\xff')[0])
'0x00ff'
>>> '0x{:04X}'.format(struct.unpack('>H', '\x00\xff')[0])
'0x00FF'

Format characters使用了:

  • I:4字节unsigned int
  • H:2字节unsinged int

<强>更新

如果缩进将任意二进制字符串转换为十六进制字符串,则可以使用binascii.hexlify

>>> import binascii
>>> '0x' + binascii.hexlify('\xFF\xFF\xFF')
'0xffffff'
>>> '0x' + binascii.hexlify('\x00\x00\xFF')
'0x0000ff'