Как преобразовать шестнадцатеричные закодированные байты в строку в Python3? - PullRequest
1 голос
/ 09 июля 2019

Я прочитал некоторое значение из реестра Windows (SAM) с Python3.Насколько я могу судить, это выглядит как шестнадцатеричные закодированные байты:

    >>> 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

Теперь, как мне преобразовать это в строку (должно быть "Администратор")?Использование «print» просто дает мне «dministrator».Как правильно выполнить конвертацию, не используя подвохов?

Ответы [ 2 ]

1 голос
/ 09 июля 2019
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'
0 голосов
/ 09 июля 2019

Я, вероятно, должен был использовать декодирование utf-16:

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

К сожалению!

...