进制转换函数整理

1、strtol()函数。功能:将2-36进制的数转换为10进制的数。头文件:#include<stdlib.h>

long int strtol (const char* str, char** endptr, int base);
返回值为long int型数据。

<1>.str是有效的n(2<=n<=36)进制的字符串:由n进制每个数位上的数组成,str[0]是最高位的数字,最后一个字符是最低位上的数字。

<2>.endptr是无效的n进制的字符串:由从第一不符合n进制的字符开始到最后一个字符的字符串组成。

<3>.base表示str代表的进制(2<=base<=36)。

    char x[6]={"234a4"};
    char *y;
    printf("%d\n",strtol(x,&y,8));
    printf("%s\n",y);

输出结果:

另外,如果base为0,且字符串不是以0x(或者0X)开头,则按十进制进行转化。如果base为0或者16,并且字符串以0x(或者0X)开头,那么,x(或者X)被忽略,字符串按16进制转化。如果base不等于0和16,并且字符串以0x(或者0X)开头,那么x被视为非法字符。

最后,需要说明的是,对于nptr指向的字符串,其开头和结尾处的空格被忽视,字符串中间的空格被视为非法字符。

2、itoa()函数。功能:将10进制的数转换为n(2<=n<36)进制。头文件:#include<stdlib.h>

char *  itoa ( int value, char * str, int base );
返回值为字符数组,与strtol恰好相反。

<1>.value是十进制数字。<2>.str是存放n进制的字符数组。<3>.base是转换的目标进制。

    int x=19960915;
    char y[100];
    itoa(x,y,16);
    printf("%s\n",y);

输出结果:

3、还有指定的进制转换。

std::bitset(转2进制),std::oct(转8进制),std::dec (转10进制),std::hex(转16进制)。头文件:#include <bitset>

    cout << "36的8进制:" << std::oct << 36 << endl;
    cout << "36的10进制" << std::dec << 36 << endl;
    cout << "36的16进制:" << std::hex << 36 << endl;
    cout << "36的2进制: " << bitset<8>(36) << endl;

输出结果:

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值