Linux函数atoi的功能分析(linuxatoi)
linux 系统中函数 atoi 用于将字符串转换为 int 类型数字,atoi 函数属于C 标准库函数,其定义如下:
int atoi(const char *nptr);
atoi 会扫描参数 nptr 字符串,跳过前面的空白字符(即便有前导0也会被忽略),直到遇上数字或正负号才开始做转换,而且 atoi 函数不支持16进制数的转换,只是支持10进制的字符串转换为对应10进制数,一旦遇到非数字或字符串结束符(\0),则会停止转换。
使用 atoi 可以很容易实现字符串与 int 的转换,在 CPython 中进行数字转换也是基于 atoi 函数,具体实现如下:
//python代码
def atoi(str):
if str is None or len(str) == 0:
return 0
i = 0
flag = 1
if str[0] == ‘-‘:
flag = -1
i = 1
res = 0
while i = ‘0’ and str[i]
res = res * 10 + int(str[i])
i += 1
return flag * res
atoi 的使用总结如下:
(1) atoi 函数只能用于将字符串转换为 int 类型,不支持16进制数的转换;
(2) atoi 函数会跳过前面的空白字符,不会考虑前导0;
(3) atoi 函数会一直做转换,直到遇到非数字或字符串结束符;
(4) CPython 中对数字转换也是基于 atoi 函数实现的。