Как я могу декодировать байтовую строку для хранения в строковую переменную без нулевых байтов и человека для чтения? - PullRequest
0 голосов
/ 02 апреля 2020

Я прочитал несколько строк из текстового файла, который был в zip-файле и должен быть преобразован в читаемую строку. например, одна строка, которую я получаю из файла show, выглядит следующим образом:

byte_code = b"\x000\x002\x002\x008\x007\x00:\x00,\x00'\x001\x004\x00.\x001\x002\x00.\x002\x000\x001\x009\x00 \x002\x000\x00:\x002\x008\x00:\x002\x007\x00'\x00,\x00$\x000\x001\x00F\x00B\x00,\x00,\x00,\x00,\x00\r\x00\n"

если я декодирую и распечатываю его, я получаю результат readabel (из-за того, что в выводе есть какой-то нулевой байт, и я не могу войти в нее

print(byte_code.decode('latin-1'))

я хотел бы получить читаемый результат, как если бы функция печати попала в обычную строковую переменную без нулевых байтов в этой строке, я ожидаю

02287:,'14.12.2019 20:28:27',$01FB,,,,

, но если я назначу строку декодирования в строковую переменную я получаю эту не читаемую строку

mystr = byte_code.decode('latin-1')
mystr
Out[55]: "\x000\x002\x002\x008\x007\x00:\x00,\x00'\x001\x004\x00.\x001\x002\x00.\x002\x000\x001\x009\x00 \x002\x000\x00:\x002\x008\x00:\x002\x007\x00'\x00,\x00$\x000\x001\x00F\x00B\x00,\x00,\x00,\x00,\x00\r\x00\n"

Является ли декодирование байтовой строки правильным форматом кодирования? Как получить правильную читаемую строку без нулевых байтов?

1 Ответ

0 голосов
/ 02 апреля 2020

Это может быть не идеальный ответ, но это может быть быстрое решение, пока не появится что-то лучшее.

byteLine = b"\xff\xfe0" + byte_code + b"\x00"

strLine = byteLine.decode('utf16')

Тогда значение strLine будет:

    In [1] : strLine
    Out[2] : "002287:,'14.12.2019 20:28:27',$01FB,,,,\r\n"
...