解码base64编码时填充错误不正确

时间:2016-06-24 06:21:45

标签: python mysql python-3.x pyqt

我尝试解码存储为BLOB的PDF并将其保存到扩展名为.pdf的文件中。 results [0] [1]具有从数据库查询中提取的BLOB数据。

         blob_val=results[0][1]
         if len(blob_val) % 4 != 0:
            while len(blob_val) % 4 != 0:
              blob_val = blob_val + b"="
            decod_text = base64.b64decode(blob_val)
         else:
            decod_text = base64.b64decode(blob_val)

尽管我在最后添加了=来纠正填充错误,但它仍然显示不正确的填充错误。为什么即使我们用" ="?

更正它,它仍会显示此错误

1 个答案:

答案 0 :(得分:0)

每个base64 char编码6位。为此,总字节数应该可以被3整除,而不是4。

这应该有效(并且有点简化):

    blob_val = results[0][1]

    # If the length is divisible by 3, the 'while' will never
    # be entered, so no point in doing the additional 'if' above.
    while len(blob_val) % 3 != 0:
        blob_val += b"="

    decod_text = base64.b64decode(blob_val)