TypeError: ожидаемый строковый аргумент, получены байты - PullRequest
0 голосов
/ 14 июля 2020

Я хотел бы преобразовать приведенные ниже шестнадцатеричные последовательности в изображения, в процессе анализа целого ряда проблем, похожих на мою, ни одна из них не приблизилась к решению, решенному в { ссылка }, мой код ниже, где я могу ошибиться?

data = "2a2b2c2a2b2c2a2b2c2a2b2cb1"
buf = io.StringIO()    
for line in data.splitlines():
    line = line.strip().replace(" ", "")
    if not line:
        continue
    bytez = binascii.unhexlify(line)
    buf.write(bytez)

with open("image.jpg", "wb") as f:
    f.write(buf.getvalue()) 

1 Ответ

0 голосов
/ 14 июля 2020

io.StringIO() создает строковый объект, который дает текстовый поток. Вместо этого вам понадобится io.BytesIO(), который создает объект байтов, в который вы можете записать свои двоичные данные:

buf = io.BytesIO()

...

buf.write(bytez)

См. Также io - Основные инструменты для работы с потоками

...