TypeError:ord()期望的字符串长度为1,但找到了int

时间:2017-01-25 04:47:11

标签: python python-3.x ord

我尝试在python 3中实现AES算法。虽然实现了这个,我在ord()函数中发现了一个错误。我只是尝试将代码从python 2.3转换为python 3.我如何修复错误? 我的代码行是:

key = map(ord, key)

提前致谢

1 个答案:

答案 0 :(得分:1)

您的密钥变量已经是bytes对象(Py2中的str)。在Py2中,str是一个长度为1 str的序列,因此您需要ord转换为int的序列。

在Py3中,bytes个对象是int的序列,从0到255(包括0和255)。基本上,在Python 2中,您需要map(ord, key)str转换为list的序列(int),在Python 3中,您不需要执行转换完全除非您需要改变序列,即便如此,您只需执行bytearray(key)制作原始bytes的可变副本。

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