解码 python 中的字符串时出现 base64 错误
base64 error when decoding a string in python
我正在开发一个可以发送图片的聊天室。但是图像很大,所以我将它们部分发送,然后将每个部分添加到一个字符串中。当我尝试解码其中包含信息的字符串时,出现此错误:
return binascii.a2b_base64(s)
Error: Incorrect padding
这是我的代码:
def getData(self):
chatArea = self.chatArea
imageBytes = ""
imageMode = False
while 1:
data = self.s.recv(8000)
if not data:
break
if imageMode == True:
imageBytes = imageBytes + data
if data[-1] == ")":
newImage = open("Untitled.png", "wb")
newImage.write(imageBytes.decode("base64"))
newImage.close()
imageMode = False
print("Done")
else:
if re.findall(r'\[(.*?)\]', data) == ["Image"]:
print("Got the data")
imageMode = True
else:
string = data + "\n\n"
chatArea.configure(state=NORMAL)
chatArea.insert(END, string)
chatArea.configure(state=DISABLED)
newString = string.split(":")[0]
self.chatArea.see(END)
if newString == self.myName or newString == "Server":
pass
else:
winsound.PlaySound("Notify.wav", winsound.SND_FILENAME)
为什么我在尝试创建图像时出现此错误?
我该如何解决?
if data[-1] == ")":
似乎期望 base64 编码的字符串以右括号结尾。
这可能是您遇到问题的原因。 imageBytes 数据是否具有您需要 trim.
的尾随或前导协议数据
希望对您有所帮助。
我正在开发一个可以发送图片的聊天室。但是图像很大,所以我将它们部分发送,然后将每个部分添加到一个字符串中。当我尝试解码其中包含信息的字符串时,出现此错误:
return binascii.a2b_base64(s)
Error: Incorrect padding
这是我的代码:
def getData(self):
chatArea = self.chatArea
imageBytes = ""
imageMode = False
while 1:
data = self.s.recv(8000)
if not data:
break
if imageMode == True:
imageBytes = imageBytes + data
if data[-1] == ")":
newImage = open("Untitled.png", "wb")
newImage.write(imageBytes.decode("base64"))
newImage.close()
imageMode = False
print("Done")
else:
if re.findall(r'\[(.*?)\]', data) == ["Image"]:
print("Got the data")
imageMode = True
else:
string = data + "\n\n"
chatArea.configure(state=NORMAL)
chatArea.insert(END, string)
chatArea.configure(state=DISABLED)
newString = string.split(":")[0]
self.chatArea.see(END)
if newString == self.myName or newString == "Server":
pass
else:
winsound.PlaySound("Notify.wav", winsound.SND_FILENAME)
为什么我在尝试创建图像时出现此错误? 我该如何解决?
if data[-1] == ")":
似乎期望 base64 编码的字符串以右括号结尾。
这可能是您遇到问题的原因。 imageBytes 数据是否具有您需要 trim.
的尾随或前导协议数据希望对您有所帮助。