#include<string>#include<iostream>using namespace std;void shift(string a){ string B[100]; string TO[100]; string num0 = "0000"; string num1 = "0001"; string num2 = "0010"; string num3 = "0011"; string num4 = "0100"; string num5 = "0101"; string num6 = "0110"; string num7 = "0111"; string num8 = "1000"; string num9 = "1001"; string A = "1010"; string B1 = "1011"; string C = "1100"; string D = "1101"; string E = "1110"; string F = "1111"; int allnum = a.length(); cout << allnum << endl; //十六进制转二进制 for (int i = 0; i < allnum; i++) { switch (a[i]) { case '0':B[i] = num0; break; case '1':B[i] = num1; break; case '2':B[i] = num2; break; case '3':B[i] = num3; break; case '4':B[i] = num4; break; case '5':B[i] = num5; break; case '6':B[i] = num6; break; case '7':B[i] = num7; break; case '8':B[i] = num8; break; case '9':B[i] = num9; break; case 'A':B[i] = A; break; case 'B':B[i] = B1; break; case 'C':B[i] = C; break; case 'D':B[i] = D; break; case 'E':B[i] = E; break; case 'F':B[i] = F; break; } } string abc =""; for (int i = 0; i < allnum; i++) abc = abc+B[i]; cout << abc << endl; //取十六进制的二进制形式的三个一组 int all=abc.length(); cout << all << endl; string hhh[100]; int j = 0; int h = 0; for (int i = all-1; i>=0; i--) { hhh[h]=hhh[h]+abc[i]; j++; if (j == 3) { j = 0; h++; } } for (int i = 0; i <all/3 ;i++) cout << hhh[i] << endl; //将得到的0,1,三位数,转换为八进制 string Num[] = { "000", "001", "010", "011", "100", "101", "110", "111" }; string MMM; for (int i = all/3; i >0; i--) { for (int j = 0; j < 8; j++) { if (hhh[i-1] == Num[j]) switch (j) { case 0:if(i!=all/3)cout << '0'; break; case 1:cout << '4'; break; case 2:cout << '2'; break; case 3:cout << '6'; break; case 4:cout << '1'; break; case 5:cout << '5'; break; case 6:cout << '3'; break; case 7:cout << '7'; break; } } }}void ShiftToEight(){ string num0 = "0000"; string num1 = "0001"; string num2 = "0010"; string num3 = "0011"; string num4 = "0100"; string num5 = "0101"; string num6 = "0110"; string num7 = "0111";}int main(){ //string str; // 设置一个终止符 //getline(cin, str, '#'); //cout << str[5] << ' ' << endl; //cout << str.length() << endl; //string a[100]; //a[0] = "212"; //a[1] = 'a'; //a[2] = '8'; //for (int i = 0; i < 3; i++) //cout << a[i]; string o; cin >> o; shift(o); system("pause"); return 0;} 十六进制转八进制主要思路是:先将十六进制数,转换为二进制的0,1形式。由于八进制是从二进制数最后往前每隔3个分为一组,所以将得到的十六进制0,1形式分成3个一组,再和八进制向对应。 注意字符串string 和字符串数组string[]的使用,switch中可以使用string
新闻热点
疑难解答