c c++进制转换方法汇总(含全部代码)

进制转换方法汇总表
| 原进制 | 转换进制 | 方法1 | 方法2 | 方法3 | 方法4 |
| 十进制 | 二进制 | bitset指定格式输出 | | 除留余数法 | itoa |
| 十进制 | 八进制 | oct/%o指定格式输出 | 流 | 除留余数法 | itoa |
| 十进制 | 十六进制 | hex/%x指定格式输出 | 流 | 除留余数法 | itoa |
| 十进制 | 其他进制 | | | 除留余数法 | itoa |
| 二进制 | 八进制 | 三位一组 | | | |
| 二进制 | 十进制 | 按权展开 | | | strtol |
| 二进制 | 十六进制 | 四位一组 | | | |
| 八进制 | 二进制 | 一位换三 | | 除留余数法 | |
| 八进制 | 十进制 | 按权展开 | 流 | | strtol |
| 八进制 | 十六进制 | | 流 | | |
| 十六进制 | 二进制 | 一位换四 | | 除留余数法 | |
| 十六进制 | 八进制 | | 流 | | |
| 十六进制 | 十进制 | 按权展开 | 流 | | strtol |

基本操作函数:

Atoi(string &S, int R) 任意进制转十进制(All Radix to Int) 参数:任意进制字符串 进制R 作用:利用按权展开加和,返回十进制
Itoa(int Num,int R) 十进制转任意进制(Int to All Radix)参数:十进制数Num,进制R 作用:利用除留余数法,返回逆序的余数,即返回所要转换的进制数

功能实现函数:

ToAll() 十进制转任意进制 调用函数Itoa,自带的itoa
ToDecimal(string &S) 任意进制转十进制函数 调用Atoi函数,strtol函数
ZhiDing() 作用:利用std的hex dec 以及 bitset,c语言的%o,%x
Stream() 作用:利用sstream头文件将数按某进制读入流,输出流

1.任意进制转十进制

【分析】按权展开,求和即可。例如,二进制数110,即4+2+0=6;另外,不想自己写的话,有strtol函数(百度百科)。

long int strtol(const char *nptr,char **endptr,int base);参数:字符串,非法字符指针,字符串中的进制

考虑的很详细,字符串中含有非法的字符(,.*等)时还能停止转换,并返回指针。

2.十进制转任意进制

【分析】除留余数法,逆序输出余数即可。另外,如果自己不想写的话,有itoa函数。

string itoa(int x,char *string,int jz);参数:想要转换的数,转换结果字符串,转换结果的进制

3.指定格式与流

【分析】主要是八进制、十进制和十六进制。对c来说是%o%d,%x;对c++来说是oct,dec,hex。作者感觉所谓的指定格式是输入输出流,sstream的stringstream类是字符串流,本质上应该是差不多的,就写在了一起。学的不深,没有看标准库中类的源代码,请大神指点。

4.二、八、十六之间的转换

【分析】表格里面的一位换四,三位一组之类的是指通过二进制。例如

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值