base64解码和字节协商字符串

时间:2019-05-26 16:05:16

标签: python python-2.7 decode

我有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时做错了什么?

1 个答案:

答案 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)