Python为我错误地在字节和十六进制之间转换

时间:2018-07-12 09:27:09

标签: python hex byte

我有一个要转换为定界十六进制的信息地址

info_address_original = b'002dd748'

我想要的是

info_address_coded = b'\x00\x2d\xd7\x48'

我尝试了this solution

info_address_original = b'002dd748'
info_address_intermediary = info_address_original.decode("utf-8") # '002dd748'
info_address_coded = bytes.fromhex( info_address_intermediary )   # b'\x00-\xd7H'

我得到

info_address_coded = b'\x00-\xd7H'

What my debugger shows

如何正确地将像这样的字节字符串转为定界十六进制?它在Python 2中隐式工作,但无法在Python 3中以我想要的方式工作。

2 个答案:

答案 0 :(得分:0)

这仅是字节的表示形式。 '-''\x2d'相同。

>>> b'\x00\x2d\xd7\x48' == b'\x00-\xd7H'
True

答案 1 :(得分:0)

字节字符串的默认表示形式是显示所有ascii可打印字符的字符值和编码的\xhh表示形式,其中hh是字节的十六进制值。

这意味着b'\x00\x2d\xd7\x48'和`b'\ x00- \ xd7H'是完全相同的包含4个字节的字符串。