我尝试在 python 3 中实现 AES 算法。在实现此算法时,我发现 ord() 函数中存在错误。我只是尝试将代码从 python 2.3 转换为 python 3。如何修复该错误? 我的代码行是:
key = map(ord, key)
提前致谢
最佳答案
您的关键变量已经是 bytes
对象(Py2 中的str
)。在 Py2 中,str
是长度为 1 str
的序列,所以你需要ord
转换为 int
的序列.
在 Py3 中,bytes
对象是 int
的序列s 从 0 到 255(含)。基本上,在 Python 2 中,您需要 map(ord, key)
从 str
转换到list
的序列(int
) ,在Python 3中,你根本不需要执行转换,除非你需要改变序列,即使这样,你也可以简单地执行bytearray(key)
制作原始版本的可变副本 bytes
.
请注意,Py2.6+ 有 bytearray
类型,它的行为与 Py3 中的行为相同(int
的可变序列),因此您可能只需使用 bytearray(key)
即可编写 2/3 可移植代码无处不在(并且启动速度比 map(ord, key)
更快)。
关于python - 类型错误 : ord() expected string of length 1, 但找到 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41843579/