【问题标题】:Fast and efficient way to convert string into integer将字符串转换为整数的快速有效方法
【发布时间】:2019-12-08 11:30:37
【问题描述】:

我想将四个字符串text转换成32位整数number,例如四个空格字符串应返回 0x20202020。所有字符串元素都是 ASCII。我知道这样的东西很管用

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

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

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

问候。

【问题讨论】:

  • 也许id(text) 可能是一个选项,具体取决于您的应用程序
  • 这种转换的目的是什么?
  • @schwobaseggl 将数据发送到 C/Assembler 脚本,然后将其发送到 LCD 显示器

标签: python string integer


【解决方案1】:

你可以使用 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 的速度大约是显式位移的两倍。

【讨论】:

    猜你喜欢
    • 2018-03-02
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 2015-04-09
    相关资源
    最近更新 更多