我有base64编码的字符串sZCLmg==
,它是Note
。我正在尝试使用base64对其进行解码,然后使用字节协商将字符串Note
返回。
import base64
encoded = 'sZCLmg==' #sZCLmg== Note
data = base64.b64decode(encoded)
print data
mylist = []
mylist.append(data)
#print mylist[0][0]
bytes = mylist[0][0]
print (bytes ^ 0xFF)
但是我遇到错误:ValueError:以10为底的int()的无效文字:'\ xb1'
有任何想法请问我在获取原始字符串Note
时做错了什么?
答案 0 :(得分:2)
在Python2中,迭代文字'\xb1\x90\x8b\x9a'
会产生字符串,而不是字节。
一种解决方案是使用bytearray。
>>> ba = bytearray(data)
>>> ''.join(chr(x ^ 0xFF) for x in ba)
'Note'
正如@wovano在评论中指出的那样,也可以不使用字节数组来执行此操作,如下所示:
''.join(chr(ord(x) ^ 0xFF) for x in data)