进制转换

来源:互联网 发布:java httpclient 详解 编辑:程序博客网 时间:2024/06/17 23:25

  关于进制转换的总结!!

/*十六进制专为十进制#include<iostream>  #include<string>  #include<math.h>  using namespace std;int main(){string s;int i = 0, count, sum;while (getline(cin, s)){int count = s.length();sum = 0;for (i =0; i <count; i++)//从十六进制个位开始,每位都转换成十进制  {if (s[i] >= '0'&&s[i] <= '9')//数字字符的转换  {sum += (s[i] - 48)*pow(16, count - i - 1);}else if (s[i] >= 'A'&&s[i] <= 'F')//字母字符的转换  {sum += (s[i] - 55)*pow(16, count - i - 1);}}cout << sum;}}*//*#include<iostream>#include<string>#include<math.h>using namespace std;int main(){string input;int para;while (cin >> input){int length = input.length();int result = 0;for (int i = 0; i<length; i++){switch (input[i]){case'0':para = 0; break;case'1':para = 1; break;case'2':para = 2; break;case'3':para = 3; break;case'4':para = 4; break;case'5':para = 5; break;case'6':para = 6; break;case'7':para = 7; break;case'8':para = 8; break;case'9':para = 9; break;case'A':para = 10; break;case'B':para = 11; break;case'C':para = 12; break;case'D':para = 13; break;case'E':para = 14; break;case'F':para = 15; break;default:break;}result = result + para*(pow(16, length - i - 1));}cout << result << endl;}return 0;}*//*//八进制专为十进制#include<iostream>  #include<string>  #include<math.h>  using namespace std;int main(){string s;int i = 0, count, sum;while (getline(cin, s)){int count = s.length();sum = 0;for (i = 0; i < count; i++)//从十六进制个位开始,每位都转换成十进制  {if (s[i] >= '0'&&s[i] <= '7')//数字字符的转换  {sum += (s[i] - 48)*pow(8, count - i - 1);}}cout << sum << endl;}return 0;}*//*//二进制专为十进制#include<iostream>#include<string>#include<math.h>using namespace std;int main(){string s;int i = 0, count, sum;while (getline(cin, s)){int count = s.length();sum = 0;for (i = 0; i < count; i++)//从十六进制个位开始,每位都转换成十进制{if (s[i] >= '0'&&s[i] <= '1')//数字字符的转换{sum += (s[i] - 48)*pow(2, count - i - 1);}    }   cout << sum << endl;}return 0;}*///十进制转换为二进制/*#include<iostream>#include<string>using namespace std;int main(){int a;while (cin>>a){int para[100] = {0};int temp;int i = 0;for (; a != 0;){       while (a!= 0){temp = a % 2;a = a / 2;para[i++] = temp;}   }for (int j = i-1; j >= 0; j--)cout << para[j];cout << endl;}return 0;}*///十进制转为八进制/*#include<iostream>#include<string>using namespace std;int main(){int a;while (cin >> a){int para[100] = { 0 };int temp;int i = 0;for (; a != 0;){while (a != 0){temp = a % 8;a = a / 8;para[i++] = temp;}}for (int j = i - 1; j >= 0; j--)cout << para[j];cout << endl;}return 0;}*///十进制转为十六进制/*#include<iostream>#include<string>using namespace std;int main(){int a;while (cin >> a){int para[100] = { 0 };int temp;int i = 0;for (; a != 0;){while (a != 0){temp = a %16;a = a / 16;para[i++] = temp;}}for (int j = i - 1; j >= 0; j--)cout << para[j];cout << endl;}return 0;}*///十六进制转为八进制,先转为十进制,再转为八进制/*#include<iostream>#include<string>#include<math.h>using namespace std;int main(){string str;while (cin >> str){int sum = 0;int length = str.length();for (int i = 0; i < length; i++){if (str[i] >= '0'&&str[i] <= '9')  sum = sum + (str[i] - 48)*pow(16, length - i - 1);else if (str[i] >= 'A'&&str[i] <= 'F')  sum = sum + (str[i] - 55)*pow(16, length - i - 1);}cout << sum << endl;int para[100] = { 0 };int temp;int j = 0;for (; sum != 0;){while (sum != 0){temp = sum % 8;sum = sum / 8;para[j++] = temp;}}for (int c = j - 1; c >= 0; c--)cout << para[c];cout << endl;}return 0;}*///八进制转为十六进制,先转为十进制,再转为十六进制#include<iostream>#include<string>#include<math.h>using namespace std;int main(){string str;while (cin >> str){int sum = 0;int length = str.length();for (int i = 0; i < length; i++){if (str[i] >= '0'&&str[i] <= '7')  sum = sum + (str[i] - 48)*pow(8, length - i - 1);}cout << sum << endl;int para[100] = { 0 };int temp;int j = 0;for (; sum != 0;){while (sum != 0){temp = sum % 16;sum = sum / 16;para[j++] = temp;}}for (int c = j - 1; c >= 0; c--)cout << para[c];cout << endl;}return 0;}
//二进制转为八进制 两种方式,1转为十进制,再转为二进制;2 每三位二进制数得到一位八进制数
!!!!还有问题,后续再改,没有考虑二进制数不是3的倍数的情况。#include<iostream>#include<stdio.h>#include<string>using namespace std;int main(){string s;while (getline(cin, s)){int length = s.length();int count=0;int j = 0;int k;int a[100] = { 0 };int sum = 0;int u = length-1;//每次三位数 for (int i = length - 1; i >= 0; i--){if (s[i] >= '0'&&s[i] <= '1') {            sum = sum + (s[i] - 48)*pow(2, length -u- 1);count++;u--;}if (count == 3){count = 0;a[j++] = sum;sum = 0;u = length-1;}}for(int k = j - 1; k >= 0; k--)cout << a[k]; cout << endl;}return 0;}



0 0
原创粉丝点击