Python如何将字符串转换为整数

时间:2016-08-04 11:50:44

标签: python built-in built-in-types

这个问题不是关于int函数的使用,而是关于它是如何在内部完成的。

因为源代码在C中,我不明白那里发生了什么。

也许有人可以解释Python如何将字符串"123"转换为整数123。 为它执行了哪些操作?

2 个答案:

答案 0 :(得分:3)

https://github.com/python/cpython/blob/2d305e1c46abfcd609bf8b2dff8d2065e6af8ab2/Objects/longobject.c#L2075-L2366包含您正在寻找的实施方案。虽然理解C是有用的,但在中间有一个很大的评论(从第2132行开始)解释了大部分方法。

答案 1 :(得分:2)

将python字符串转换为int时,例如a = int("123",10),(将字符串“123”转换为基数为10的整数)调用C函数。

首先,检查给定的计数基数是> = 2且< = 36,还是0.(否则出错)
接下来,它会忽略所有前导空格。 (以便" 123" = "123"),
并检查该号码是标记为正'+'还是标记为'-'

当base为0时,它检查字符串是否以'0x','0o', '0b', '0'开头,并分别设置基数(十六进制,八进制,二进制,十进制)。
请注意,如果没有给出基数,则默认基数为10(十进制)。

然后使用link posted by Paul Kehrer

代码注释中描述的算法将字符数组转换为数字

尾随空格也会被忽略,如果需要也会引发错误 - 例如,如果字符串中间有空格,后跟数字,或者是否存在非数字字符。