十六进制转八进制
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int main(){
void change(string str,int l);
int i,n;
cin>>n;
string st[n];
int len[n];
for(i=0;i<n;i++){
cin>>st[i];
}
for(i=0;i<n;i++){
len[i]=st[i].length();
}
for(i=0;i<n;i++){
change(st[i],len[i]);
}
return 0;
}
void change(string str,int l){
string add;
int i,j,k;
if(l%3==1){
add="00";
str=add+str;
}
else if (l%3==2){
add="0";
str=add+str;
}
l=str.length();
string str1="",str2="",str3="";
for(k=0;k<l/3;k++){
str1="";
for(i=k*3;i<k*3+3;i++){
switch(str[i]){
case '0':str1+="0000";break;
case '1':str1+="0001";break;
case '2':str1+="0010";break;
case '3':str1+="0011";break;
case '4':str1+="0100";break;
case '5':str1+="0101";break;
case '6':str1+="0110";break;
case '7':str1+="0111";break;
case '8':str1+="1000";break;
case '9':str1+="1001";break;
case 'A':str1+="1010";break;
case 'B':str1+="1011";break;
case 'C':str1+="1100";break;
case 'D':str1+="1101";break;
case 'E':str1+="1110";break;
case 'F':str1+="1111";break;
default:break;
}
}
for(i=0;i<4;i++){
str2="";
for(j=i*3;j<i*3+3;j++){
str2=str2+str1[j];
}
if(str2=="000")str3+='0';
if(str2=="001")str3+='1';
if(str2=="010")str3+='2';
if(str2=="011")str3+='3';
if(str2=="100")str3+='4';
if(str2=="101")str3+='5';
if(str2=="110")str3+='6';
if(str2=="111")str3+='7';
}
}
for(i=0;i<3;i++)
if(str3[0]=='0') str3=str3.erase(0,1);
cout<<str3<<endl;
}