strtol及数制转换

简介: 函数及其参数   long int strtol(const char *nptr,char **endptr,int base);编辑本段函数的解释说明   这个函数会将参数nptr字符串根据参数base来转换成长整型数。

函数及其参数

  long int strtol(const char *nptr,char **endptr,int base);
编辑本段
函数的解释说明

  这个函数会将参数nptr字符串根据参数base来转换成长整型数。参数base范围从2至36,或0。参
数base代表采的进制方式,如base值为10则采用10进制,若base值为16则采用16进制等。当base值为
0时则是采用10进制做转换,但遇到如’0x’前置字符则会使用16进制做转换、遇到’0’前置字符而
不是’0x’的时候会使用8进制做转换。一开始strtol()会扫描参数nptr字符串,跳过前面的空格字
符,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时('\0')结束转换,并将结
果返回。若参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr返回;若
参数endptr为NULL,则会不返回非法字符串。
编辑本段
strtol是atoi的增强版

主要体现在这几方面:
  1.不仅可以识别十进制整数,还可以识别其它进制的整数,取决于base参数,比如strtol
("0XDEADbeE~~", NULL, 16)返回0xdeadbee的值,strtol("0777~~", NULL, 8)返回0777的值。
  2.endptr是一个传出参数,函数返回时指向后面未被识别的第一个字符。例如char *pos;
strtol("123abc", &pos, 10);,strtol返回123,pos指向字符串中的字母a。如果字符串开头没有可
识别的整数,例如char *pos; strtol("ABCabc", &pos, 10);,则strtol返回0,pos指向字符串开头
,可以据此判断这种出错的情况,而这是atoi处理不了的。
  3.如果字符串中的整数值超出long int的表示范围(上溢或下溢),则strtol返回它所能表示的
最大(或最小)整数,并设置errno为ERANGE,例如strtol("0XDEADbeef~~", NULL, 16)返回
0x7fffffff并设置errno为ERANGE


//进制转换a到b,注意需要全用字符串
void fun(int a,int b,int temp[])
{
int i=0,j;
while(a)
{
temp[i++]=a%b;
a/=b;
}
//倒置存放,共i位
for(j=0;j<i/2;j++)
temp[j]=temp[i-j-1];
}
int fun(int num[],int a)//转为十进制
{
int ans=0;int i=0;//num数组是上面的temp数组
ans=ans*a+num[i];//m[]从最高位开始,类似秦九韶算法
return ans;
}

 

目录
相关文章
|
C语言
C语言之回文数的求解。回文数一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
C语言之回文数的求解。回文数一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
178 0
|
5月前
|
C语言
【汇编语言实战】输入一个无符号整数求其逆序
【汇编语言实战】输入一个无符号整数求其逆序
43 2
|
5月前
|
C语言
c语言编程练习题:7-28 求整数的位数及各位数字之和
c语言编程练习题:7-28 求整数的位数及各位数字之和
58 0
蓝桥杯基础训练】十六进制转八进制
给定n个十六进制正整数,输出它们对应的八进制数。
70 0
|
算法 C++ Python
每日算法系列【EOJ 3031】二进制倒置
每日算法系列【EOJ 3031】二进制倒置
|
算法
[leetcode] 1 比特与 2 比特字符-水题
指针i 从0 开始往后走,如果当前位置的值为0 ,则一定是第一种情况,指针向右移一位 如果说当前值为1 ,则一定是第二种情况,指针向右移动两位,如果说最终 i == bits.size() - 1 那么说就是一个合法的
104 0
[leetcode] 1 比特与 2 比特字符-水题
|
机器学习/深度学习
693. 交替位二进制数 : 位运算应用题
693. 交替位二进制数 : 位运算应用题
[解题报告](第24讲) 字符串算法(四) - 字符计数法(2)
[解题报告](第24讲) 字符串算法(四) - 字符计数法
[解题报告](第24讲) 字符串算法(四) - 字符计数法(2)
[解题报告](第24讲) 字符串算法(四) - 字符计数法(1)
[解题报告](第24讲) 字符串算法(四) - 字符计数法
[解题报告](第24讲) 字符串算法(四) - 字符计数法(1)
|
网络协议 Java
二进制运算
基础很重要,与市面上大部分只讲结果的文章(粘贴复制)不同。作者将会亲自带你领会二进制运算的魅力
158 0