方法一:
根据a的最大值可以判断16进制数最大为8位
#include<iostream>
using namespace std;
int main()
{
char a[8];
long m;
cin>>m;
long s = m;
int i = 0;
while(s/16 != 0)
{
if(s%16 < 10)
{
a[i++] = ‘0‘+s%16;
}
if(s%16 >=10 && s%16 <16)
{
a[i++] = ‘A‘+s%16 - 10;
}
s = s/16;
}
if(s%16 < 10)
{
a[i] = ‘0‘+s%16;
}
if(s%16 >=10 && s%16 <16)
{
a[i] = ‘A‘+s%16 - 10;
}
while(i>=0)
{
cout<<a[i--];
}
return 0;
}
方法二:
#include<iostream>
using namespace std;
int main()
{
char a[8];
char b[] = "0123456789ABCDEF";
long m;
cin>>m;
long s = m;
int i = 0;
while(s/16 != 0)
{
a[i++] = b[s%16];
s = s/16;
}
a[i] = b[s%16];
while(i>=0)
{
cout<<a[i--];
}
return 0;
}
由此可以得到一个除k取余的一般方法,例如十进制转化为八进制可以这样写:
(假设a的最大值还是2147483647,最大需要11个8进制位)
#include<iostream>
using namespace std;
int main()
{
char a[11];
long m;
cin>>m;
long s = m;
int i = 0;
while(s/8 != 0)
{
a[i++] = ‘0‘ + s%8;
s = s/8;
}
a[i] = ‘0‘ + s%8;
while(i>=0)
{
cout<<a[i--];
}
return 0;
}
原文:http://blog.csdn.net/qsyzb/article/details/18887963