如果我调用os.urandom(64),就会得到64个随机字节。关于Convert bytes to a Python string我试过
a = os.urandom(64)
a.decode()
a.decode("utf-8")
但是得到了一个回溯错误,指出字节不在utf-8中。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 0: invalid start byte
带字节
b'\x8bz\xaf$\xb6\x93q\xef\x94\x99$\x8c\x1eO\xeb\xed\x03O\xc6L%\xe70\xf9\xd8
\xa4\xac\x01\xe1\xb5\x0bM#\x19\xea+\x81\xdc\xcb\xed7O\xec\xf5\\}\x029\x122
\x8b\xbd\xa9\xca\xb2\x88\r+\x88\xf0\xeaE\x9c'
有没有完整的方法将这些字节解码成一些字符串表示?我正在生成sudo随机令牌,以跟踪跨多个数据库引擎的相关文档。
您可以使用base-64编码。在这种情况下:
还要注意,我在这里使用的是
encode
,而不是decode
,因为decode
试图将它从您指定的任何格式转换为unicode格式。因此,在您的示例中,您将随机字节视为它们形成了一个有效的utf-8
字符串,这种情况很少出现在随机字节中。下面的代码适用于Python2.7和3:
你有随机字节;如果能解码成字符串,我会非常惊讶。
如果要使用unicode字符串,请从拉丁语-1解码:
因为它将字节一对一映射到相应的Unicode代码点。
相关问题 更多 >
编程相关推荐