任意的进制转换
2017-06-12 22:45
225 查看
任意进制转换
/* File name:任意进制转换.cpp Author:杨柳 Date:2017/5/30 IDE:DEV-c++ 算法思想:首先应该将任意进制number1转化为十进制的数number2,然后再将十进制数转化为任意进制进制的数number3。 */ #include <iostream> #include <string.h> #include <math.h> using namespace std; //转化类 class Shift { private: string num; int binary; public: Shift(){}; //构造函数 int convertToDecimal(string num,int binary);//将任意进制转化为十进制 void decimalToAnyBinary(int decimal,int binary);//将十进制转化为任意进制 void ToAnyBinary(string num,int f_binary,int binary);//将任意进制转化为任意进制 char numToChar(int num);//将一个整型数字转化成字符型数字 int charToNum(char num);//将一个字符型数字转化成整型数字 }; //将一个整型数字转化成字符型数字 char Shift::numToChar(int num) { //num在0-9 if(num<=9&&num>=0) { num+=48; } //num在10-15 else { switch(num) { case 10: num='A'; break; case 11: num='B'; break; case 12: num='C'; break; case 13: num='D'; break; case 14: num='E'; break; case 15: num='F'; break; } } return num; } //将一个字符型数字转化成整型数字 int Shift::charToNum(char num) { //num在'0'-'9' if(num<='9'&&num>='0') { num-=48; } //num在'A/a'到'F/f' else { switch(num) { case 'A': case 'a': num=10; case 'B': case 'b': num=11; case 'C': case 'c': num=12; case 'D': case 'd': num=13; case 'E': case 'e': num=14; case 'F': case 'f': num=15; } } return num; } //将任意进制整数转化为十进制整数 int Shift::convertToDecimal(string num,int binary) //num为任意进制整数,binary为该整数的进制 { int len=num.size(); int decimal_num=0; for(int i=0;i<len;i++) { decimal_num+=charToNum(num[i])*pow(binary,len-i-1); } return decimal_num; } /*将十进制转化为任意进制,decimal为十进制整数,binary为需要转化的进制*/ void Shift::decimalToAnyBinary(int decimal,int binary) { string result;//保存结果 char temp; while(decimal) { temp=decimal%binary; result+=numToChar(temp); //结果连在字符串后 decimal=decimal/binary; } //输出结果 for(int i=result.size()-1;i>=0;i--) cout<<result[i]; cout<<endl; } //将任意进制转化为任意进制 void Shift::ToAnyBinary(string num,int f_binary,int binary) { int decimal_num; decimal_num=convertToDecimal(num, f_binary); //先转换十进制 decimalToAnyBinary(decimal_num, binary); } int main() { Shift sh; // cout<<sh.convertToDecimal("110", 2);//110为为二进制转换为十进制 sh.ToAnyBinary("12aF",16,2); //十六进制12aF转换成二进制 return 0; }
相关文章推荐
- java 任意进制转换
- hdoj2031 任意进制转换
- 初学C#之进制转换(支持十进制小数转任意进制【2到36进制】)
- 进制转换---由任意进制转为任意进制---NOJ1592
- sdnu oj 1041 任意进制转换
- 任意的进制转换
- 用栈实现任意进制转换
- 任意进制转换 和 字符串整形转换函数
- 题目1080:进制转换(任意进制直接转换方法)
- 数据结构 栈的应用任意进制转换(c语言实现)
- java 任意进制转换
- 数据结构 使用递归任意进制转换(c语言实现)
- 心算 进制转换 心得 =》 任意进制的数 转 任意进制的数
- EASY_ZJU_PAT_ADVANCED LEVEL_1027 任意进制转换
- Java实现任意进制转换
- php版任意进制转换
- 10进制对36进制内任意进制转换
- 任意进制转换
- 任意进制转换!!!
- 任意的进制转换