You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
2.0 KiB
125 lines
2.0 KiB
#include<bits/stdc++.h>
|
|
using namespace std;
|
|
int main() {
|
|
int n = 0, i = 0, j = 0, temp = 0, nNum = 0;
|
|
char ch;
|
|
string strHex[10];
|
|
string strBin[10];
|
|
string strOct[10];
|
|
|
|
cin>>n;
|
|
for (i = 0; i < n; ++i) {
|
|
cin>>strHex[i];
|
|
}
|
|
|
|
//十六进制转二进制
|
|
for (i = 0; i < n; ++i) {
|
|
j = 0;
|
|
while (strHex[i][j]) {
|
|
switch(strHex[i][j]) {
|
|
case '0':
|
|
strBin[i] += "0000";
|
|
break;
|
|
case '1':
|
|
strBin[i] += "0001";
|
|
break;
|
|
case '2':
|
|
strBin[i] += "0010";
|
|
break;
|
|
case '3':
|
|
strBin[i] += "0011";
|
|
break;
|
|
case '4':
|
|
strBin[i] += "0100";
|
|
break;
|
|
case '5':
|
|
strBin[i] += "0101";
|
|
break;
|
|
case '6':
|
|
strBin[i] += "0110";
|
|
break;
|
|
case '7':
|
|
strBin[i] += "0111";
|
|
break;
|
|
case '8':
|
|
strBin[i] += "1000";
|
|
break;
|
|
case '9':
|
|
strBin[i] += "1001";
|
|
break;
|
|
case 'A':
|
|
strBin[i] += "1010";
|
|
break;
|
|
case 'B':
|
|
strBin[i] += "1011";
|
|
break;
|
|
case 'C':
|
|
strBin[i] += "1100";
|
|
break;
|
|
case 'D':
|
|
strBin[i] += "1101";
|
|
break;
|
|
case 'E':
|
|
strBin[i] += "1110";
|
|
break;
|
|
case 'F':
|
|
strBin[i] += "1111";
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
++j;
|
|
}
|
|
}
|
|
|
|
//二进制转化为八进制
|
|
for (i = 0; i < n; ++i) {
|
|
j = strBin[i].size()-1;//获得长度
|
|
while (strBin[i][j] && j>=0) {
|
|
temp = 3;
|
|
nNum = 0;
|
|
while (temp-- && j>=0) {
|
|
if ('1' == strBin[i][j]) {
|
|
switch(temp) {
|
|
case 0:
|
|
nNum += 4;
|
|
break;
|
|
case 1:
|
|
nNum += 2;
|
|
break;
|
|
case 2:
|
|
nNum += 1;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
--j;
|
|
}
|
|
strOct[i] += (nNum+'0');
|
|
}
|
|
}
|
|
|
|
//字符串逆序
|
|
for (i = 0; i < n; ++i) {
|
|
temp = strOct[i].size()-1;
|
|
for (j = 0; j <= temp/2; ++j) {
|
|
ch = strOct[i][j];
|
|
strOct[i][j] = strOct[i][temp-j];
|
|
strOct[i][temp-j] = ch;
|
|
}
|
|
}
|
|
//打印
|
|
for (i = 0; i < n; ++i) {
|
|
j = 0;
|
|
while (strOct[i][j++] == '0');//跳过前面的0
|
|
for(--j; j < strOct[i].size(); ++j) {
|
|
cout<<strOct[i][j]-'0';
|
|
}
|
|
/*if (i != n-1)*/
|
|
cout<<endl;
|
|
}
|
|
return 0;
|
|
}
|
|
|