我尝试在python3中实现一个AES算法。在实现这个过程中,我在ord()函数中发现了一个错误。我只是尝试将代码从python2.3转换成python3。我该如何修复这个错误?我的代码行是:
key = map(ord, key)
提前感谢
发布于 2017-01-25 05:02:30
您的键变量已经是一个bytes
对象(Py2中的str
)。在Py2中,str
是一个长度为1 str
的序列,因此您需要ord
将其转换为int
序列。
在Py3中,bytes
对象是从0到255 (包括0和255)的int
序列。基本上,在Python2中,您需要map(ord, key)
将str
转换为int
的序列(list
),在Python3中,您根本不需要执行转换,除非您需要更改序列,即使这样,您也可以简单地使用bytearray(key)
来制作原始bytes
的可变副本。
请注意,Py2.6+具有bytearray
类型,并且它的行为与Py3 (int
的可变序列)中的行为相同,因此您可能只需在任何地方使用bytearray(key)
就可以编写2/3的可移植代码(而且它将比启动时使用map(ord, key)
更快)。
https://stackoverflow.com/questions/41843579
复制