# 十进制转十六进制 代码

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

最后的结果为15F5
#include <iostream>
#include <string>

using namespace std;

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

int main(int argc, char* argv[])
{
// 十进制转十六进制
int num = 0;
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;
}