如何在Python3中将十六进制编码的字节转换为String?

时间:2019-07-09 09:15:19

标签: python-3.x byte

我从Python 3的Windows注册表(SAM)中读取了一些值。据我所知,它看起来像十六进制编码的字节:

    >>> b = b'A\x00d\x00m\x00i\x00n\x00i\x00s\x00t\x00r\x00a\x00t\x00o\x00r\x00'
    >>> print(b)
    A d m i n i s t r a t o r

现在如何将其转换为字符串(应为“管理员”)?使用“打印”只会给我“ ADMINI STRATR”。如何在不使用肮脏技巧的情况下正确进行转换?

2 个答案:

答案 0 :(得分:1)

b = b'A\x00d\x00m\x00i\x00n\x00i\x00s\x00t\x00r\x00a\x00t\x00o\x00r\x00'
b = b.replace(b'\x00', b'')
print(b)
# b'Administrator'

答案 1 :(得分:0)

我应该使用utf-16解码:

    >>> b = b'A\x00d\x00m\x00i\x00n\x00i\x00s\x00t\x00r\x00a\x00t\x00o\x00r\x00'
    >>> print(b.decode('utf-16'))
    Administrator

抱歉!