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 布 ...
随机推荐
- Spark1.4从HDFS读取文件运行Java语言WordCounts
Hadoop:2.4.0 Spark:1.4.0 Ubuntu 14.0 1.首先启动Hadoop的HDFS系统. HADOOP_HOME/sbin/start-dfs.sh 2.在Linux ...
- Mahout 算法
Mahout 包括协同过滤,基于User和Item的推荐:kmeans.Fuzzy-kmeans .Mean shift .Dirichlet process .LDA聚类:奇异值分解:并行频繁项集挖 ...
- OC语言(四)
二十八.id类型(万能指针) 可以指向任何id对象(本身就是指针,不用*) id相当于NSObject *,类似于一种多态. 二十九.重写构造方法 new方法的实质:分配空间+alloc 和 初始化- ...
- Customer Form Issue: Automatic Matching Rule Set Defaults Value AutoRuleSet-1
In this Document Symptoms Changes Cause Solution References APPLIES TO: Oracle Receivables ...
- LeetCode之“链表”:Partition List
题目链接 题目要求: Given a linked list and a value x, partition it such that all nodes less than x come befo ...
- 可靠联机的 TCP 协议
可靠联机的 TCP 协议 在前面的 OSI 七层协议当中,在网络层的 IP 之上则是传送层,而传送层的数据打包成什么? 最常见的就是 TCP 封包了.这个 TCP 封包数据必须要能够放到 IP 的数据 ...
- Linux - 动态(Dynamic)与静态(Static)函数库
首先我们要知道的是,函式库的类型有哪些?依据函式库被使用的类型而分为两大类,分别是静态 (Static) 与动态 (Dynamic) 函式库两类. 静态函式库的特色: 扩展名:(扩展名为 .a) ...
- PS 滤镜——平面坐标变换到极坐标
%%% orthogonal coordinate to polar coordinate %%% 平面坐标转极坐标 clc; clear all; close all; addpath('E:\Ph ...
- 色彩转换——RGB & HSL
RGB to HSL The R,G,B values are divided by 255 to change the range from 0..255 to 0..1: R' = R/255 G ...
- Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能
Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSD ...