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