C++ 进制转换 十进制十六进制八进制二进制相互转换

思路:

  1. 下面我把相互转换的所有类型都写出来了。实际上都是通过十进制中转的,这样比较简单,写出X进制转成十进制和从十进制转成X进制的两份代码直接拷贝就完成了剩余的部分。哦,对,自己封装了一个charToDigit函数,主要是将字符转为数字用的。
  2. 十六进制转十进制转八进制:
  3. 其他同理

代码结构图

全部代码:

1#include <iostream> 2#include <math.h> 3#include <sstream>//使用该库函数的ostringstream,将int变成string 4using namespace std; 5 6//字符转数字 7int charToDigit(char c) 8{ 9 if(c=='A') 10 return 10; 11 else if(c=='B') 12 return 11; 13 else if(c=='C') 14 return 12; 15 else if(c=='D') 16 return 13; 17 else if(c=='E') 18 return 14; 19 else if(c=='F') 20 return 15; 21 else 22 return c-'0'; 23} 24 25int jinzhi16to10(string pre) 26{ 27 int length=pre.size(); 28 int result=0; 29 for(int i=0; i<length; i++) 30 { 31 result+=((charToDigit(pre[i]))*pow(16,length-1-i)); 32 } 33 return result; 34} 35 36int jinzhi8to10(string pre) { 37 int length=pre.size(); 38 int result=0; 39 for(int i=0; i<length; i++) 40 { 41 result+=((charToDigit(pre[i]))*pow(8,length-1-i)); 42 } 43 return result; 44} 45 46int jinzhi2to10(string pre) 47{ 48 // 在此处可以添加验证是否为二进制数字的逻辑 49 int length=pre.size(); 50 int result=0; 51 for(int i=0; i<length; i++) 52 { 53 result+=((charToDigit(pre[i]))*pow(2,length-1-i)); 54 } 55 return result; 56} 57 58string jinzhi10to2(int pre) { 59 ostringstream oss; 60 while(pre!=0){ 61 oss<<pre%2; 62 pre/=2; 63 } 64 string res=oss.str(); 65 oss.str("");//清空原数据流 66 for(int i=0;i<res.length();i++){ 67 oss<<res[res.length()-i-1]; 68 } 69 return oss.str(); 70} 71string jinzhi10to8(int pre) { 72 ostringstream oss; 73 while(pre!=0){ 74 oss<<pre%8; 75 pre/=8; 76 } 77 string res=oss.str(); 78 oss.str("");//清空原数据流 79 for(int i=0;i<res.length();i++){ 80 oss<<res[res.length()-i-1]; 81 } 82 return oss.str(); 83} 84string jinzhi10to16(int pre) { 85 ostringstream oss; 86 while(pre!=0){ 87 oss<<pre%16; 88 pre/=16; 89 } 90 string res=oss.str(); 91 oss.str("");//清空原数据流 92 for(int i=0;i<res.length();i++){ 93 oss<<res[res.length()-i-1]; 94 } 95 return oss.str(); 96} 97int main() 98{ 99 /** 100 用于从控制台获取字符串A 101 int n; 102 cin>>n; 103 string *A=new string[n]; 104 for(int i=0;i<n;i++){ 105 cin>>A[i]; 106 }*/ 107 108 cout<<jinzhi10to2(jinzhi16to10("A2")); 109} 110 111 112

欢迎关注微信公众号“IT客“ ,投稿邮箱 itkeyy@163.com

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

Python 练手 &quot;小例子&quot; 闯关60题!

一、数字1求绝对值绝对值或复数的模In1:abs(6)Out1:62进制转化十进制转换为二进制:In2:bin(10)Out2:'0b1010'十进制转换为八进制:In3:oct(9)Out3:'0o11'十进制转换为十六进制:In4:hex(15)Out4:'0xf'3整数和ASCII互

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

KVM调整cpu和内存

一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid