我已提取图像前景色、纹理和边缘映射值的base64字符串,我有一个以下结构的列表:
forecolor=AgCEAg4DUQQCBQQGARMBFQE1AmUB
edge=AfCAFg5iIATCPwTAEIiBFggBDw
forecolor=AgAsAQ0CJAMcDRgOGg8DHQYeBzYBPQ4-DU0ETgNtBm4CfQI
我正在尝试解码这些值,但是收到了错误的填充错误,以下是确切的错误:
Traceback (most recent call last):
File "ImageVectorData.py", line 44, in <module>
print "Decoded String: " + decoded.decode('base64', 'strict')
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/encodings/base64_codec.py", line 42, in base64_decode
output = base64.decodestring(input)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/base64.py", line 321, in decodestring
return binascii.a2b_base64(s)
binascii.Error: Incorrect padding
这是我的代码:
for item in value:
print "String before Split: " + item
if item.split("=")[0] == "forecolor":
decoded = (item.split("=")[1])
print "String to be decoded: " + decoded
print "Decoded String: " + decoded.decode('base64', 'strict')
当第一个forecolor base64字符串被解码时,我看到了一个有趣的输出结果:
这是它的输出:String before Split: forecolor=AgCEAg4DUQQCBQQGARMBFQE1AmUB
String to be decoded: AgCEAg4DUQQCBQQGARMBFQE1AmUB
Decoded String: ?Q5e
我不太确定我在这里做错了什么。我查看了下面的Python文档并尝试了一下,但那也不起作用: http://docs.python.org/library/base64.html
edge
的值似乎不是一个有效的base64编码字符串,因此Python会给出错误消息。使用有效的输入,一切都应该正常工作。 - Sven Marnach==
来解决填充问题。更大的问题是,解码结果完全无法理解。 - Mark Ransom