十六进制至八进制的转换要借用二进制作为跳板,即将十六进制先转换为二进制,再将转换过的二进制数转换为八进制。
原理还是很简单的,每1位十六进制数可对应4位二进制数,每1位八进制数可对应3位二进制数(因为7的二进制为111)。
其中有一点需要注意的就是当十六进制所转换的二进制数位不能被3整除时需要在串首加1或2个“0”以确保可以完整地转换为八进制。
尽量使用字符串来储存以确保储存空间。
实行代码:
1 #include2 using namespace std; 3 int a[10000010];//储存八进制数 4 5 int main(){ 6 int n; 7 string str,str2; 8 cin>>n; 9 while(n--){10 cin>>str;11 int len=str.size();12 str2="";13 for(int i=0;i