#include<iostream>
#include<cstring>
static int m = 0;
void hashFunc_Two(long long int x);
void Print(char a[],int n);
using namespace std;
int main(void)
{
long long int g;
cin >> g;
hashFunc_Two(g);
return 0;
}
void hashFunc_Two(long long int x)//十进制转十六进制算法
{
int z[10], num = 0;
char k[100];
do {
z[num++] = x % 16;
x = x / 16;
m++;
} while (x != 0);
for (int i = 0; i < m; i++)
{
if (z[i] <= 16&&z[i] >= 10)
{
z[i] = z[i] + 'A' - 10;
}
else if (z[i] <= 9&&z[i] >= 0)
{
z[i] = z[i] + '0';
}
}
for (int i = 0; i < m; i++)
{
k[i] = (char)(z[i]);
}
Print(k, m);
}
void Print(char a[],int n)
{
for (int i = n-1; i >=0; i--)
{
cout << a[i];
}
cout << endl;
}
注释:十进制的y转为Q进制z的算法
int z[40],num=0;//数组z存放Q进制数y的每一位,num为位数
do{
z[num++]=y%Q;//除基取余
y=y/Q;
}while(y!=0);//当商不为零时进行循环
注意:输出时反向输出(从n-1到0)