python - 将字符串转换为整数的快速有效的方法

标签 python string integer

我想将四个字符串text转换为32位整数number,例如四个空格字符串应返回 0x20202020。所有字符串元素都是 ASCII。我知道这样的事情是有效的

number = ord(text[0]) << 24 | ord(text[1]) << 16 | ord(text[2]) << 8 | ord(text[3]) << 0

但它相当慢且效率低下。有没有更快的方法?

编辑:这是算法的一部分,通过 C/汇编器脚本将字符串发送到 LCD 显示屏。字符串必须分成包含数字的列表,每个数字代表四个字符。

问候。

最佳答案

您可以使用 text => bytes => int:

int.from_bytes(text.encode(),'big')

快速时间比较:

import timeit

print(timeit.timeit("int.from_bytes(text.encode(),'big')","text = 'abcd'"))
print(timeit.timeit("ord(text[0]) << 24 | ord(text[1]) << 16 | ord(text[2]) << 8 | ord(text[3]) << 0","text = 'abcd'"))

输出:

0.21847990699999997
0.4186516309999999

因此,int.from_bytes 的速度似乎大约是显式位移的两倍。

关于python - 将字符串转换为整数的快速有效的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59234929/

相关文章:

python - 用户配置文件管理器,用于创建和删除用户和配置文件

python - Pandas:如何组合连接两个数据框

python - 正则表达式将短语分割成由许多空格分隔的列

java - for 循环中的字符串文字与 for 循环中的字符串生成器

c++ - 已排序的快速排序输出提供了一个额外的字符

C:为什么整数充当长整数?

java - 字符串无法转换为 java 错误

python - Pickle 忽略带槽的卡住数据类上的 __getstate__

java - 如何从txt文件行读取并打印字符串和整数数组

c - 为什么 248x248 是我可以声明的最大二维数组大小?