十进制转十六进制 代码

版权声明:http://blog.csdn.net/robertkun https://blog.csdn.net/robertkun/article/details/5381597

 

5621转换为16进制数的方法是“除16取余”方法, 
5621/16=商351余5,16进制最后一位为5 
351/16=商21余15,16进制右边第二位为F 
21/16=商1余5,16进制右边第三位为5 
1/16=商0余1,16进制数右边第四为为1 
商0就不继续除了  
最后的结果为15F5
#include <iostream>
#include <string>

using namespace std;

// 整数转换成字符串
string  int2str( int  num);

 
int main(int argc, char* argv[])
{
	// 十进制转十六进制
	int num = 0;
	cout<<"Please Input A Num "<<endl;
	cin>>num;
	string str_num;
	while(num / 16 != 0)
	{
		int a = num / 16;
		int mod_a = num % 16;
		cout<<"mod_a = "<<mod_a<<endl;
		string s;
		switch(mod_a)
		{
		case 10:
			s = 'A';
			break;
		case 11:
			s = 'B';
			break;
		case 12:
			s = 'C';
			break;
		case 13:
			s = 'D';
			break;
		case 14:
			s = 'E';
			break;
		case 15:
			s = 'F';
			break;
		default:
			s = int2str(mod_a);
			break;
		}
		str_num = s + str_num;
		num = a;
	}
	if(num % 16 != 0)
	{
		int last_a = num % 16;
		str_num = int2str(last_a) + str_num;
	}

	cout<<"The Hex Num = "<<str_num<<endl;
	return 0;
}

string  int2str( int  num)
{
	if (num  ==   0 )
		return   " 0 " ;
	string  str  =   "" ;
	int  num_  =  num  >   0   ?  num :  - 1   *  num;
	while (num_)
	{
		str  =  ( char )(num_  %   10   +   48 )  +  str;
		num_  /=   10 ;
	} 
	if (num  <   0 )
		str  =   " - "   +  str;
	return  str;
}


 

阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页