【问题标题】:Python incorrectly converts between bytes and hex for mePython 为我错误地在字节和十六进制之间转换
【发布时间】:2018-12-20 11:11:47
【问题描述】:

我有一个 info_address,我想将其转换为带分隔符的十六进制

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 中却没有按照我想要的方式工作。

【问题讨论】:

    标签: python hex byte


    【解决方案1】:

    这只是字节的表示。 '-''\x2d' 相同。

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2010-09-09
        • 1970-01-01
        • 2018-01-16
        • 2013-09-12
        • 1970-01-01
        • 2021-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多