长整型转化为十六进制数,属于模拟操作,对16进行求余,余数取逆。中间的存储过程用到字符串。同理转化为其他进制也能直接调整。
#include <stdio.h>
#include<string.h>
/* 功能:字符串处理 :长整型数转化十六进制
时间:2024年10月
地点:贤者楼129
作者:LChen
*/
int main() {
long long num;
int k=0;
char s[50]; // 用于存储结果的字符数组
char p[]= "0123456789ABCDEF"; // 十六进制字符
scanf("%lld",&num);
// 如果数字为0,直接输出
if(num==0) {
printf("0\n");
return 0;
}
// 将数字转换为十六进制
while(num>0) {
s[k++]=p[num%16]; // 取余得到当前位的十六进制字符
num/=16; // 右移四位,相当于除以16
}
// 逆向输出
printf("0x");
for(int i=k-1;i>=0;i--) {
putchar(s[i]);
}
printf("\n");
return 0;
}