【发布时间】:2017-04-05 09:15:15
【问题描述】:
我正在尝试将 Base64 解码为十六进制以获取大约 200 个 Base64 数据,但出现以下错误。它对其中的 60 个进行解码,然后停止。
ABHvPdSaxrhjAWA=
0011ef3dd49ac6b8630160
ABHPdSaxrhjAWA=
Traceback (most recent call last):
File "tt.py", line 36, in <module>
csvlines[0] = csvlines[0].decode("base64").encode("hex")
File "C:\Python27\lib\encodings\base64_codec.py", line 43, in base64_decode
output = base64.decodestring(input)
File "C:\Python27\lib\base64.py", line 325, in decodestring
return binascii.a2b_base64(s)
binascii.Error: Incorrect padding
一些来自 CSV 的原始 Base64 源代码
ABHPdSaxrhjAWA=
ABDPdSaxrhjAWA=
ABDPdSaxrhjAWA=
ABDPdSaxrhjAWA=
ABDPdSaxrhjAWA=
ABDPdSaxrhjAWA=
ABDPdS4xriiAVQ=
ABDPdSqxrizAU4=
ABDPdSrxrjPAUo=
【问题讨论】:
-
错误仍然是文本;请复制并粘贴该文本,无法搜索屏幕截图。
-
这意味着源文本并非真正来自 base64。你从哪里得到的文字?也许你犯了一个剪切粘贴错误?
-
@JohnGordon:不,这也可能意味着缺少填充。填充对于解码实际上不是强制性的,它仅在您想检测不完整的传输时才有用。
-
您的所有示例字符串都是 1 个填充字符短。一个有效的值(在你的回溯之上),还有一个字符(
v)。 -
@MartijnPieters 如果编码的文本缺少
=,我会很紧张,只是在末尾添加一个。显然文本被改变了;我们如何确定丢失的字符不在中间的某个地方?