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

- 其他同理
代码结构图

全部代码:
#include <iostream>
#include <math.h>
#include <sstream>//使用该库函数的ostringstream,将int变成string
using namespace std;
//字符转数字
int charToDigit(char c)
{
if(c=='A')
return 10;
else if(c=='B')
return 11;
else if(c=='C')
return 12;
else if(c=='D')
return 13;
else if(c=='E')
return 14;
else if(c=='F')
return 15;
else
return c-'0';
}
int jinzhi16to10(string pre)
{
int length=pre.size();
int result=0;
for(int i=0; i<length; i++)
{
result+=((charToDigit(pre[i]))*pow(16,length-1-i));
}
return result;
}
int jinzhi8to10(string pre) {
int length=pre.size();
int result=0;
for(int i=0; i<length; i++)
{
result+=((charToDigit(pre[i]))*pow(8,length-1-i));
}
return result;
}
int jinzhi2to10(string pre)
{
// 在此处可以添加验证是否为二进制数字的逻辑
int length=pre.size();
int result=0;
for(int i=0; i<length; i++)
{
result+=((charToDigit(pre[i]))*pow(2,length-1-i));
}
return result;
}
string jinzhi10to2(int pre) {
ostringstream oss;
while(pre!=0){
oss<<pre%2;
pre/=2;
}
string res=oss.str();
oss.str("");//清空原数据流
for(int i=0;i<res.length();i++){
oss<<res[res.length()-i-1];
}
return oss.str();
}
string jinzhi10to8(int pre) {
ostringstream oss;
while(pre!=0){
oss<<pre%8;
pre/=8;
}
string res=oss.str();
oss.str("");//清空原数据流
for(int i=0;i<res.length();i++){
oss<<res[res.length()-i-1];
}
return oss.str();
}
string jinzhi10to16(int pre) {
ostringstream oss;
while(pre!=0){
oss<<pre%16;
pre/=16;
}
string res=oss.str();
oss.str("");//清空原数据流
for(int i=0;i<res.length();i++){
oss<<res[res.length()-i-1];
}
return oss.str();
}
int main()
{
/**
用于从控制台获取字符串A
int n;
cin>>n;
string *A=new string[n];
for(int i=0;i<n;i++){
cin>>A[i];
}*/
cout<<jinzhi10to2(jinzhi16to10("A2"));
}
欢迎关注微信公众号“IT客“ ,投稿邮箱 itkeyy@163.com

C++ 进制转换 十进制十六进制八进制二进制相互转换的更多相关文章
- NOJ 1012 进制转换(十进制转换成随意进制)
题目: 进制转换 时间限制(普通/Java) : 1000 MS/ 3000 MS 执行内存限制 : 65536 KByte总提交 : 1819 測试通过 : ...
- JAVA基础学习之String、StringBuffer、StringBuilder、基本数据类型的使用、整形进制转换、集合Collection、Vector、ArrayList、LinkedList、HashSet、TreeSet等(3)
主函数类MainDemo.java package com.itcast.test20140109; import java.util.ArrayList; import java.util.Coll ...
- Java基础(进制转换-)
进制概述: 进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正”字计数法,以及类似的tally mark计数). 对于任何一种进制---X ...
- 流程控制 if while for 已及数字类型 进制转换
一:if 语句 语法一:ifif 条件: code1 code1 code1 语法二:if ...else ... if 条件: code1 code1 code1else: code1 code1 ...
- 学习python第五天进制转换
6.进制之间的转换(重要) 二进制:满二进一 范围:0.1符号:0b例如:0b10...[注意]计算机只能识别二进制数据 八进制:满八进一 范围:0~7符号:0o例如:0o66 十进制:满十进一 范围 ...
- python 数据类型、进制转换
数据类型 存储单位 最小单位是bit,表示二进制的0或1,一般写作b 最小的存储单位是字节,用byte表示,1B = 8b 1024B = 1KB 1024KB = 1MB 1024MB = 1GB ...
- JavaScript下的进制转换
JavaScript下的进制转换 //十进制转其他进制 var num = 99; console.log('十进制: ', num); console.log('八进制:', (num).toStr ...
- python补充之进制转换、exec、eval、compile
目录 eval.exec和compile 1.eval函数 2.exec函数 eval()函数和exec()函数的区别 python中的进制转换 eval.exec和compile 1.eval函数 ...
- 19-3-4 Python进制转换;bool str int三者之间的转换;字符串的索引,切片;for循环的使用
进制转换: 二进制转十进制: 0010 1111 = 1*2**0+1*2**1+1*2**2+1*2**3+1*2**5 十进制转换二进制: 用十进制数除2逆序取余 --->101010 布 ...
随机推荐
- Socket编程实践(6) --TCP服务端注意事项
僵尸进程处理 1)通过忽略SIGCHLD信号,避免僵尸进程 在server端代码中添加 signal(SIGCHLD, SIG_IGN); 2)通过wait/waitpid方法,解决僵尸进程 sign ...
- Swift基础之Delegate方法的使用
本文简单介绍了使用Delegate方法的进行值的传递,改变上一个界面的字体大小和颜色 首先创建一个导航视图: let viewC = ViewController(); let navi ...
- Python学习笔记 - 数据类型和变量
Python中有整数和浮点数,表示方法和C语言一样 浮点数也很像,不过Python可以用单引号把字符串括起来 字符串是以单引号'或双引号"括起来的任意文本,比如'abc',"xyz ...
- 《java入门第一季》集合框架引入与面试题
注:在开始的几篇集合介绍里,不包含泛型的概念.泛型在讲述所有集合后再加入进去. 集合的由来: 我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我 ...
- R-- Apply族函数
APPLY族函数: apply(x,a,f) 对矩阵或数据框的某一维度作用函数fx为矩阵或数据框:a为1代表行,a为2代表列:f为作用函数. lapply(x,f) 对x的每一个元组作用函数f,结果以 ...
- java工具类(一)之服务端java实现根据地址从百度API获取经纬度
服务端java实现根据地址从百度API获取经纬度 代码: package com.pb.baiduapi; import java.io.BufferedReader; import java.io. ...
- 大型服装集团BI决策系统的分析主题模块
一般BI商业智能解决方案都包含财务.销售.客户等分析模块,本文分享的是某大型服装集团通过帆软FineBI建设的BI决策系统.该决策系统主要针对财务.资金.采购.生产.库存.物流.销售.渠道.产品.客户 ...
- STL - vector容器
1Vector容器简介 vector是将元素置于一个动态数组中加以管理的容器. vector可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法,这个等下会详讲). vector尾部添加 ...
- SQL-Teradata基础
1.创建一个和表 pnr_1 结构一样的表 Create table pnr_2 as pnr_1 with no data 不含数据 Create table pnr_2 as pnr_1 wit ...
- Orientation Auto Rotation旋转屏幕crash问题(Unity3D开发之十四)
猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/44133127 ...