strtol函数 将字符串转换为相应进制的整数
来源:互联网 发布:硬件和软件是什么 编辑:程序博客网 时间:2024/06/05 20:12
转自http://hi.baidu.com/qwpsmile/blog/item/9bc44efa4f41018a9f514637
+----------------+
|
+----------------+
i.e. string to long
long int strtol(const char *nptr, char **endptr, int base)
strtol()会将nptr指向的字符串,根据参数base,按权转化为long int, 然后返回这个值。
参数base的范围为2~36,和0;它决定了字符串以被转换为整数的权值。
可以被转换的合法字符依据base而定,举例来说,当base为2时,合法字符为‘0’,‘1’;base为8时,合法字符为‘0’,‘1’,……‘7’;base为10时,合法字符为‘0’,‘1’,……‘9’;base 为16时,合法字符为‘0’,‘1’,……‘9’,‘a’,……‘f’;base为24时,合法字符为‘0’,……‘9’,‘a’,……‘n’,base为36时,合法字符为‘0’,……‘9’,‘a’,……‘z’;等等。其中,不区分大小写,比如,‘A’和‘a’会都会被转化为10。
当字符合法时,‘0’,……‘9’依次被转换为十进制的0~9,‘a’,……‘z’一次北转换为十进制的10~35。
strtol()函数检测到第一个非法字符时,立即停止检测,其后的所有字符都会被当作非法字符处理。合法字符串会被转换为long int, 作为函数的返回值。非法字符串,即从第一个非法字符的地址,被赋给*endptr。**endptr是个双重指针,即指针的指针。strtol()函数就是通过它改变*endptr的值,即把第一个非法字符的地址传给endptr。
多数情况下,endptr设置为NULL, 即不返回非法字符串。
下面看几个例子:
------------------------------------------------------
char buffer[20]="10379cend$3";
char *stop;
printf("%d\n",strtol(buffer, &stop, 2));
printf("%s\n", stop);
输出结果:
2
379cend$3
-------------------------------------------------------
char buffer[20]="10379cend$3";
char *stop;
printf("%d\n",strtol(buffer, &stop, 8));
printf("%s\n", stop);
输出结果:
543
9cend$3
--------------------------------------------------------
char buffer[20]="10379cend$3";
char *stop;
printf("%d\n",strtol(buffer, &stop, 10));
printf("%s\n", stop);
输出结果:
10379
cend$3
-------------------------------------------------------
char buffer[20]="10379cend$3";
char *stop;
printf("%d\n",strtol(buffer, &stop, 16));
printf("%s\n", stop);
输出结果:
17005006
nd$3
另外,如果base为0,且字符串不是以0x(或者0X)开头,则按十进制进行转化。如果base为0或者16,并且字符串以0x(或者0X)开头,那么,x(或者X)被忽略,字符串按16进制转化。如果base不等于0和16,并且字符串以0x(或者0X)开头,那么x被视为非法字符。
例如:
-------------------------------------------------------
char buffer[20]="0x31da6c";
char *stop;
printf("%d\n",strtol(buffer, &stop, 0));
printf("%s\n", stop);
输出结果(stop为空):
3267180
-------------------------------------------------------
char buffer[20]="0x31da6c";
char *stop;
printf("%d\n",strtol(buffer, &stop, 13));
printf("%s\n", stop);
输出结果:
0
0x31da6c
-------------------------------------------------------
例如:
-------------------------------------------------------
char buffer_1[20]="10379c";
char buffer_2[20]="
char buffer_3[20]="
printf("%d\n",strtol(buffer_1,NULL,0));
printf("%d\n",strtol(buffer_2,NULL,0));
printf("%d\n",strtol(buffer_3,NULL,0));
输出结果为:
10379
10379
10
- strtol函数 将字符串转换为相应进制的整数
- strtol函数 将字符串转换为相应进制的整数
- strtol----将16进制字符串转换为整数
- strtol函数---将字符串按一定的进制转换
- 将16进制字符串转换为整数的函数
- 如何将整数转换为相应的字符串
- C++字符串(16进制、8进制形式)转换为整数——strtol
- 将8进制字符串转换为整数的代码
- 将相应的字符串转换为相应的数字
- itoa()函数将整数转换为字符串的一个例子
- 将整数转换为相应的一个字符数组。 自定义函数是个好东西!!!
- 编写一个函数将字符串中的数字字符转化为相应的整数
- 将整数转换为相应的一个字符数组
- stof()、atoi()、atol()、strtod()、strtol()、strtoul() 共6个可以将字符串转换为数字的函数
- 将字符串形式输入的比特串转换为相应的十六进制表示的函数
- 将16进制字符串转换为整数输出
- 如何将字符串转换为相应的整型
- 自定义getMode --- 将mode_t 转换为相应的字符串
- 牛顿迭代法求开根号。 a^1/2_______Xn+1=1/2*(Xn+a/Xn)
- Oracle11gR2 RAC for Linux安装上篇:VirtualBox + Grid Infrastructure + ASM 两节点安装 简要步骤及安装问题总结
- 机动车车辆识别代码(车架号)校验函数
- 求亲密数
- malloc函数及用法
- strtol函数 将字符串转换为相应进制的整数
- html和css基础
- strspn 和strcspn
- MyEclipse 保存、启动报错:'Building workspace' has encountered a problem解决方法
- PN结加正向偏置电压 其空间电荷区为何变窄
- 三级联动地址选择器,遇到的问题记录
- 2015年09月12日
- 《越狱》观后感
- (转)KMP算法实现。超级赞!见过的最容易理解的