【发布时间】:2019-02-24 18:49:28
【问题描述】:
如果我尝试这样做:
from base64 import b64encode
b64encode('ffffff')
我收到此错误:
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
base64.b64encode('ffffff')
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/base64.py", line 58, in b64encode
encoded = binascii.b2a_base64(s, newline=False)
TypeError: a bytes-like object is required, not 'str'
因为它说的是类似字节的对象,所以我尝试了这个:
b64encode(bytes('ffffff'))
失败了。
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
b64encode(bytes('ffffff'))
TypeError: string argument without an encoding
最后,使用.encode('utf-8')函数:
b64encode('ffffff'.encode('utf-8'))
输出不正确b'ZmZmZmZm',正确的base64编码是////。
我已经知道如何将 b64 解码为十六进制,所以不要说如何做到这一点。
编辑:这个问题被标记为与将十六进制字符串转换为十六进制字节相同。这涉及到base64。
【问题讨论】:
-
bytes('fffff', 'UTF-8')是您正在寻找的。但我不认为'ffffff'做你认为它做的事情,它和'\xff\xff\xff'不一样。 -
没用,又返回了
b'ZmZmZmZm'。 (假设您的意思是:b64encode(bytes('ffffff', 'utf-8')))