【问题标题】:TypeError: string argument expected, got 'bytes'TypeError:需要字符串参数,得到“字节”
【发布时间】:2020-11-04 06:36:34
【问题描述】:

我想将下面的十六进制序列转换为图像,在筛选大量与我类似的问题的过程中,没有一个与https://stackoverflow.com/a/33989302/13648455 中解决的问题相近,我的代码如下,其中我会出错吗?

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

【问题讨论】:

    标签: python-3.x hex python-imaging-library


    【解决方案1】:

    io.StringIO() 创建一个产生文本流的字符串对象。 您需要 io.BytesIO() 代替,它会创建一个字节对象,您可以将二进制数据写入该对象:

    buf = io.BytesIO()
    
    ...
    
    buf.write(bytez)
    

    另见io — Core tools for working with streams

    【讨论】:

      猜你喜欢
      • 2015-10-30
      • 2019-03-01
      • 1970-01-01
      • 2021-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      • 1970-01-01
      相关资源
      最近更新 更多