十六进制转八进制(代码)

/*
十六 -> 1位十六进制变 4 位二进制 -> 3位二进制变 1 位八进制 (从后往前,前面不够3位就补零) 

  (5B89)16 
= (0101 1011 1000 1001)2 
= (000 101 101 110 001 001)2 
= (055611)8 
= (55611)8
*/

/*
1.把16进制字符串分割 
2.把每位 16进制 转化成 2 进制
3.从后开始数,每 3 位 2进制组成一组,开头不够 3位的话可以补零 
4.把每组 2进制转化为 8进制 
*/

#include 
#include 
using namespace std;

 string s16; //16进制 
 string s2;  //2 进制 
 //string s8;  //8 进制  
 
 void change16to2(char c) //把每位 16进制 转化成 2 进制
 {
 	int tempNum, yuShu;
 	//把字符串转换成数字 
 	if (c>='A') tempNum = c - 'A' + 10;
 	else tempNum = c - '0';
	//cout<=0;i--)
		s2 = s2 + tempS[i];  //这里得出的 s2是一个 2进制 字符串 
	//s2 = s2 + " ";
 }
 
 void change2to8()  //把每组 2进制转化为 8进制 
 {
 	int s2Len = s2.length();
	
	int ans = 0;//用来计数,每 3 清零 
	
	for (int i=0;i>n;
	while(n--)
	{
		s16 = "";
		s2 = "";
		
		cin>>s16;
		for (int i=0;i



此算法可能会超时。。。

你可能感兴趣的:(C/C++,算法)