头文件:#include <stdlib.h>
定义函数:long int strtol(const char *nptr, char **endptr, int base);
函数说明:strtol()会将参数nptr 字符串根据参数base 来转换成长整型数。参数base 范围从2 至36,或0。参数base 代表采用的进制方式,如base 值为10 则采用10 进制,若base 值为16 则采用16 进制等。当base值为0 时则是采用10 进制做转换,但遇到如'0x'前置字符则会使用16 进制做转换。一开始strtol()会扫描参数nptr 字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时('\0')结束转换,并将结果返回。若参数endptr 不为NULL,则会将遇到不合条件而终止的nptr 中的字符指针由endptr 返回。
返回值:返回转换后的长整型数,否则返回ERANGE 并将错误代码存入errno 中。
附加说明:ERANGE 指定的转换字符串超出合法范围。
范例:将字符串a, b, c 分别采用10, 2, 16 进制转换成数字。
执行结果:
a=1000000000
b=512
c=65535
定义函数:long int strtol(const char *nptr, char **endptr, int base);
函数说明:strtol()会将参数nptr 字符串根据参数base 来转换成长整型数。参数base 范围从2 至36,或0。参数base 代表采用的进制方式,如base 值为10 则采用10 进制,若base 值为16 则采用16 进制等。当base值为0 时则是采用10 进制做转换,但遇到如'0x'前置字符则会使用16 进制做转换。一开始strtol()会扫描参数nptr 字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时('\0')结束转换,并将结果返回。若参数endptr 不为NULL,则会将遇到不合条件而终止的nptr 中的字符指针由endptr 返回。
返回值:返回转换后的长整型数,否则返回ERANGE 并将错误代码存入errno 中。
附加说明:ERANGE 指定的转换字符串超出合法范围。
范例:将字符串a, b, c 分别采用10, 2, 16 进制转换成数字。
- #include <stdlib.h>
- main(){
- char a[] = "1000000000";
- char b[] = "1000000000";
- char c[] = "ffff";
- printf("a=%d\n", strtol(a, NULL, 10));
- printf("b=%d\n", strtol(b, NULL, 2));
- printf("c=%d\n", strtol(c, NULL, 16));
- }
#include <stdlib.h> main(){ char a[] = "1000000000"; char b[] = "1000000000"; char c[] = "ffff"; printf("a=%d\n", strtol(a, NULL, 10)); printf("b=%d\n", strtol(b, NULL, 2)); printf("c=%d\n", strtol(c, NULL, 16)); }
执行结果:
a=1000000000
b=512
c=65535