【问题标题】:Python string with binary data base64 encode gives TypeError具有二进制数据库 base64 编码的 Python 字符串给出 TypeError
【发布时间】:2016-10-29 14:19:10
【问题描述】:

我正在努力解决以下问题:

我有一个包含以下二进制数据的数组(加密后):

data = '\x03×ÿ\x7f*J\x9aÖ¯AÀM|ü{R2+M°ø2\x83.\x1f@µ³U¡VT'

我想对它进行base64编码。

当我这样做时

binascii.b2a_base64(data)

我收到TypeError: a bytes-like object is required, not 'str'

我迫切需要有关如何处理此类数据的建议。请帮忙!

更新:我修复了数据类型,当然 - 我的问题与单个字符串有关

【问题讨论】:

  • 你不能传入一个列表给b2a_base64(),异常显示你传入的是一个字符串;您是否使用过binascii.b2a_base64(array[0])

标签: python python-3.x base64 binary-data binascii


【解决方案1】:

你没有二进制数据,你有文本字符串。

先将文本转换为字节;你可以通过编码来做到这一点。 看起来好像您生成了与 Latin-1 字节一对一对应的 Unicode 代码点,因此您可以编码到该编解码器:

for value in array:
    bytes_value = value.encode('latin-1')
    base64_encoded = binascii.b2a_base64(bytes_value)

但是,哪种编码适合您的文本首先取决于它的生成方式。如果您正在加密,您可能希望将加密代码修复为不直接生成文本而是生成字节。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    • 2015-01-31
    • 2013-01-12
    • 1970-01-01
    相关资源
    最近更新 更多