如何将base64解码为单字节?
How to decode base64 to single bytes?
在下面的代码中:
import base64
base64.decodebytes('DBCCOAABAMA='.encode('ascii'))
结果是
b'\x0c\x10\x828\x00\x01\x00\xc0'
第三个字节是 \x828
,它不适合单个字节并导致我的脚本出现问题。我不想将它解码为 ASCII
.
以外的任何其他内容
初始的base64编码器有问题吗?
为什么会出现这个问题,我该如何解决?
更新:
我遇到的问题是代码
base64.decodebytes('DBCCOAABAMA='.encode('ascii')).decode('ascii')
导致错误
UnicodeDecodeError: 'ascii' codec can't decode byte 0x82 in position 2: ordinal not in range(128)
一些字节,如果它们落在可打印字符范围内,则不会打印为十六进制转义。这段代码向您展示了真正发生的事情:
>>> for b in base64.decodebytes('DBCCOAABAMA='.encode('ascii')):
print(hex(b), chr(b))
0xc
0x10
0x82 ‚
0x38 8
0x0
0x1
0x0
0xc0 À
P.S。我不明白为什么 encode
没有抛出错误,其中一些字节超出了 ASCII 范围。
在下面的代码中:
import base64
base64.decodebytes('DBCCOAABAMA='.encode('ascii'))
结果是
b'\x0c\x10\x828\x00\x01\x00\xc0'
第三个字节是 \x828
,它不适合单个字节并导致我的脚本出现问题。我不想将它解码为 ASCII
.
初始的base64编码器有问题吗? 为什么会出现这个问题,我该如何解决?
更新:
我遇到的问题是代码
base64.decodebytes('DBCCOAABAMA='.encode('ascii')).decode('ascii')
导致错误
UnicodeDecodeError: 'ascii' codec can't decode byte 0x82 in position 2: ordinal not in range(128)
一些字节,如果它们落在可打印字符范围内,则不会打印为十六进制转义。这段代码向您展示了真正发生的事情:
>>> for b in base64.decodebytes('DBCCOAABAMA='.encode('ascii')):
print(hex(b), chr(b))
0xc
0x10
0x82 ‚
0x38 8
0x0
0x1
0x0
0xc0 À
P.S。我不明白为什么 encode
没有抛出错误,其中一些字节超出了 ASCII 范围。