两个进制转换函数

两个进制转换函数

ID:12490278

大小:28.55 KB

页数:10页

时间:2018-07-17

两个进制转换函数_第1页
两个进制转换函数_第2页
两个进制转换函数_第3页
两个进制转换函数_第4页
两个进制转换函数_第5页
资源描述:

《两个进制转换函数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、介绍两个进制转换用到的函数1,strtol(转载)今天,在review一些代码的时候,看到了strtol()这个函数,由于以前使用它的时候,还没有深刻的了解,这次,我决定探个究竟。网上关于这个函数的资料大都来源于同份资料,linux库函数,讲的不够细致。于是,我花了几个小时,认真地尝试其功能,并整理了这篇文章,希望能对C语言的爱好者一些帮助。希望大家能够将本文中发现的错误及时反馈给我,以便修正。我的信箱是wp.qin@sunmedia.com。+----------------+

2、     strtol            

3、+----------------+i.e.string

4、tolonglongintstrtol(constchar*nptr,char**endptr,intbase)strtol()会将nptr指向的字符串,根据参数base,按权转化为longint,然后返回这个值。参数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时,合法字符

5、为‘0’,……‘9’,‘a’,……‘n’,base为36时,合法字符为‘0’,……‘9’,‘a’,……‘z’;等等。其中,不区分大小写,比如,‘A’和‘a’会都会被转化为10。当字符合法时,‘0’,……‘9’依次被转换为十进制的0~9,‘a’,……‘z’一次北转换为十进制的10~35。strtol()函数检测到第一个非法字符时,立即停止检测,其后的所有字符都会被当作非法字符处理。合法字符串会被转换为longint,作为函数的返回值。非法字符串,即从第一个非法字符的地址,被赋给*endptr。**endptr是个双重指针,即指针的指针。strtol()函数就是通过它改变*endptr的

6、值,即把第一个非法字符的地址传给endptr。多数情况下,endptr设置为NULL,即不返回非法字符串。下面看几个例子:------------------------------------------------------charbuffer[20]="10379cend$3";char*stop;printf("%d",strtol(buffer,&stop,2));printf("%s",stop);输出结果:2379cend$3-------------------------------------------------------charbuffer[20

7、]="10379cend$3";char*stop;printf("%d",strtol(buffer,&stop,8));printf("%s",stop);输出结果:5439cend$3--------------------------------------------------------charbuffer[20]="10379cend$3";char*stop;printf("%d",strtol(buffer,&stop,10));printf("%s",stop);输出结果:10379cend$3--------------------------

8、-----------------------------charbuffer[20]="10379cend$3";char*stop;printf("%d",strtol(buffer,&stop,16));printf("%s",stop);输出结果:17005006nd$3另外,如果base为0,且字符串不是以0x(或者0X)开头,则按十进制进行转化。如果base为0或者16,并且字符串以0x(或者0X)开头,那么,x(或者X)被忽略,字符串按16进制转化。如果base不等于0和16,并且字符串以0x(或者0X)开头,那么x被视为非法字符。例如:------------

9、-------------------------------------------charbuffer[20]="0x31da6c";char*stop;printf("%d",strtol(buffer,&stop,0));printf("%s",stop);输出结果(stop为空):3267180-------------------------------------------------------charbuffer[20]="0x

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。