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语言之十进制转化为十六进制
C语言之十进制转化为十六进制
166 0
|
3月前
|
存储 C语言
【C语言基础考研向】04整型进制转换
本文介绍了计算机中整型常量的不同进制表示,包括二进制、八进制、十六进制和十进制,并解释了它们之间的转换方法。以一个32位整型数为例,展示了其在不同进制下的表示形式及计算方法,特别指出在内存观察中常用十六进制,同时提到了小端存储方式对数据的影响。
|
3月前
|
存储 算法 C语言
C语言程序设计核心详解 第一章:数制及转换与ASCII码
本专栏旨在夯实C语言基础,涵盖基础知识与进阶内容,助力解决自命题考试和考研问题,为数据结构与算法设计奠定坚实基础。内容包括数制及其转换、ASCII码、内存管理、机器码等,重点讲解二进制、八进制、十六进制的概念与转换方法,并介绍C语言的结构、数据类型和标识符规范。
|
7月前
|
存储 C++
【软件设计师备考 专题 】数制基础:二进制、十进制和十六进制的理解与转换
【软件设计师备考 专题 】数制基础:二进制、十进制和十六进制的理解与转换
131 1
|
搜索推荐 C语言 索引
ACAT2021纳新题目(C语言)
ACAT2021纳新题目(C语言)
64 0
|
C语言
非正式纳新题目(C语言)1
非正式纳新题目(C语言)1
101 0
|
7月前
|
存储 算法 搜索推荐
C语言第二十七练 异或的运算规律
C语言第二十七练 异或的运算规律
62 0
|
7月前
|
算法 搜索推荐 程序员
C语言第二十六练 实现罗马数字转整数
C语言第二十六练 实现罗马数字转整数
106 0
|
7月前
|
机器学习/深度学习 C语言
c语言编程练习题:7-47 二进制的前导的零
c语言编程练习题:7-47 二进制的前导的零
64 0
|
搜索推荐 C语言
非正式纳新题目(C语言)2
非正式纳新题目(C语言)2
95 0