我想将四个字符串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/