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 布 ...
随机推荐
- 如何让 jQuery Mobile 不显示讨厌的 loading 界面
jQuery Mobile 的一个BUG: 当不采用 ajax 以及 他自己的 back 返回的时候,即: 点击浏览器后退按钮时,将会从缓存之中加载页面,此时,讨厌的 loading 动画出来了,而且 ...
- pig基础知识总结
Pig Latin UDF语句 REGISTER 在Pig运行时环境中注册一个JAR文件 DEFINE 为UDF.流式脚本或命令规范新建别名 Pig Latin命令类型 kill ...
- Linux多线程实践(7) --多线程排序对比
屏障 int pthread_barrier_init(pthread_barrier_t *restrict barrier, const pthread_barrierattr_t *restri ...
- java,http的post和get
使用Java发送GET.POST请求 --节选自<疯狂Java讲义> URL的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和 UR ...
- Css技术入门笔记02
第一篇见Css入门笔记01http://blog.csdn.net/qq_32059827/article/details/51406674 4.其他选择器 4.1.关联选择器 有时在页面上会出现我们 ...
- android 优化之布局优化
布局优化的思路很简单,尽量减少布局文件的层级,看过系统源码的都知道,Android view绘制都是逐层绘制的,所以布局的层级少了,decodeview的时候绘制工作自然就少了. 那么如何进行布局的优 ...
- UVa - 102 - Ecological Bin Packing
Background Bin packing, or the placement of objects of certain weights into different bins subject t ...
- Ext JS 5初探(三)
在上文提到了本地化文件的问题,然后在Ext JS 5的包里找了找,居然还没包含本地化包.我估计目前还不到考虑本地化的时候.在Sencha Touch中,是没有本地化包的,但是要让Ext JS也不包含本 ...
- linux进程管理之进程创建
所谓进程就是程序执行时的一个实例. 它是现代操作系统中一个很重要的抽象,我们从进程的生命周期:创建,执行,消亡来分析一下Linux上的进程管理实现. 一:前言 进程管理结构; 在内核中,每一个进程对应 ...
- FPGA学习笔记(一)Verilog语法基础
一.变量类型 ①数值 数值表示采用 <二进制位数>'<数值表示的进制><数值>的结构. 其中进制可以为b.o.d.h分别代表二.八.十.十六进制. 例如22'd0代 ...