如何将一串转义的十六进制字符转换为单个十六进制数?
从套接字读取我得到一个字符串\ xFF \ xFF \ xFF ..等。我想将其转换为十六进制数0xFFFFFF,保持任何无关紧要的0,所以\ x00 \ xFF应该是0x00FF。我尝试过binascii的各种功能,但我没有运气。
答案 0 :(得分:3)
>>> 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'
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'