c++ 二进制、八进制、十进制、十六进制相互转换

itoa()和strtol()可以实现二进制、八进制、十进制、十六进制之间的相互转换,
包含在 #inculde < cstdlib >

1.十进制转换为其他进制

使用itoa(int dec,char str, int R),将十进制数dec转换为R进制的数存放到str数组中
参数:
dec:十进制整数
str :char 类型的字符串
R:进制

    int dec=10;//将整数10转换为2、8、16进制
    char bin[100];
    char oct[100];
    char hex[100];

    itoa(dec,bin,2);
    itoa(dec,oct,8);
    itoa(dec,hex,16);
    cout<<bin<<endl;
    cout<<oct<<endl;
    cout<<hex<<endl;
1010
12
a

2.将其他进制转换为十进制

使用strtol(char *str,char **stop, int R),将R进制数str转换为十进制数作为返回值
参数:
str:R进制字符串
stop :char 类型的字符串
R:进制

    char b[100]="111";//将二进制“111”转换为十进制
    char o[100]="17";//将八进制“17”转换为十进制
    char h[100]="A1";//将十六进制“A1”转换为十进制

    char *stop;//接收后面的非法字符

    int dec1 = strtol(b,&stop,2);
    int dec2 = strtol(o,&stop,8);
    int dec3 = strtol(h,&stop,16);
    cout<<dec1<<endl;
    cout<<dec2<<endl;
    cout<<dec3<<endl;
7
15
161
进制转换汇总表
十进制
二进制转换为 strtol(b,&stop,2)
八进制转换为 strtol(o,&stop,8)
十六进制转换为 strtol(h,&stop,16)
二进制 八进制 十六进制
十进制转换为 itoa(dec,bin,2) itoa(dec,oct,8) itoa(dec,hex,16)

详细的介绍可以参考下面两篇文章:

https://blog.csdn.net/lady_killer9/article/details/87904318
https://blog.csdn.net/vir_lee/article/details/80645066

你可能感兴趣的:(c++)