类型错误:ord() 预期字符串长度为 1,但找到 int



我尝试在python 3中实现AES算法。我只是尝试将代码从python 2.3转换为python 3.如何解决错误?我的代码行是:

key = map(ord, key)

提前致谢

您的关键变量已经是一个bytes对象(在 Py2 中str)。在 Py2 中,str 是一个长度为 1 str 的序列,所以你需要ord转换为 int 序列。

在 Py3 中,bytes对象是从 0 到 255(包括 0 到 255)的 int s 序列。基本上,在Python 2中,你需要map(ord, key)str转换为int的序列(list),在Python 3中,除非你需要改变序列,否则你根本不需要执行转换,即使这样,你也可以简单地做bytearray(key)来制作原始bytes的可变副本。

请注意,Py2.6+ 具有 bytearray 类型,它的行为与 Py3 中的行为相同(int s 的可变序列),因此您可以通过在任何地方使用 bytearray(key) 来编写 2/3 的可移植代码(并且启动速度将比 map(ord, key) 快)。

最新更新