16进制数转换为8进制数
题目描述
给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
输出n行,每行为输入对应的八进制正整数。
题目分析
将16进制逐位转换为4位2进制,然后再3位一组,转换为8进制数
注意:如果字符串的截取与拼接以及采用合适的符合题意的方式输出
代码实现
完整代码
#include<iostream>
#include<string>
#include <stdio.h>
#include <stdlib.h>
#include<sstream>//用于实现string >> int
#include<cmath>//数学函数
#include <Windows.h>
using namespace std;
//首位填充0元素
string MakeUp(string str,int num){
string zero;
int len=str.length();
int n;
if(len<num){
n=num-len;
for(int i=0;i<n;i++)
zero+="0";
return zero+str;
}
else
return str;
}
//2进制转8进制
string BitToOct(string str){
string oct;//8进制字符串接收返回值
string new_oct;
string bit;//存储截取的3位2进制字符串
stringstream ss;//采用文件流将string 与 int 相互转换
while(str