快速有效的方式将字符串转换为整数

时间:2019-12-08 11:30:37

标签: 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 / Assembler脚本将字符串发送到LCD显示。字符串必须分成包含每个代表四个字符的数字的列表。

致谢。

1 个答案:

答案 0 :(得分:4)

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

using data = std::tuple<double, double, double>;
void matrix_mul3x1(const data& A, const data& B, data& C)
{
    std::get<0>(C) = std::get<0>(A) * std::get<0>(B) ...;
    // ....
}

快速时间比较:

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