python - 类型错误 : ord() expected string of length 1, 但找到 int

标签 python python-3.x ord

我尝试在 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/

相关文章:

python - Kraken API 请求发送异常

python - 如何在index django中显示答案?

python - Python 中的高效矢量/点类

python - 在临时文件夹上设置 SFTP 服务器?

python - 如何使用 re 将字符串拆分为不同的电话?

python - 停留在下一个字母生成器——Python 3

Python:对字符串执行取模

python - 如何计算数据框行的标准偏差?

python - 在 matplotlib 3d 中旋转 STL 文件

python 如何像 zlib.adler32 一样快速地计算一个简单的校验和