方法1:使用标准库函数 printf
直接使用 printf 的格式说明符 %x 或 %X 来输出16进制数。
#include <stdio.h>
int main() {
int decimal = 255;
// 小写字母输出
printf("十进制 %d 的16进制表示(小写): %x\n", decimal, decimal);
// 大写字母输出
printf("十进制 %d 的16进制表示(大写): %X\n", decimal, decimal);
return 0;
}
输出:
十进制 255 的16进制表示(小写): ff
十进制 255 的16进制表示(大写): FF
方法2:手动转换算法
如果不允许使用 printf,可以手动实现十进制到十六进制的转换。
步骤:
- 反复除以16,记录余数(0-15)。
- 将余数转换为对应的16进制字符(0-9,A-F)。
- 逆序排列余数,得到最终的16进制字符串。
代码实现:
#include <stdio.h>
#include <string.h>
void decimalToHex(int decimal, char hexStr[]) {
const char hexDigits[] = "0123456789ABCDEF";
int i = 0;
// 处理0的特殊情况
if (decimal == 0) {
hexStr[0] = '0';
hexStr[1] = '\0';
return;
}
// 转换为16进制(逆序存储)
while (decimal > 0) {
hexStr[i++] = hexDigits[decimal % 16];
decimal /= 16;
}
hexStr[i] = '\0'; // 字符串结束符
// 逆序字符串
int len = strlen(hexStr);
for (int j = 0; j < len / 2; j++) {
char temp = hexStr[j];
hexStr[j] = hexStr[len - 1 - j];
hexStr[len - 1 - j] = temp;
}
}
int main() {
int decimal = 255;
char hexStr[20]; // 存储16进制字符串
decimalToHex(decimal, hexStr);
printf("十进制 %d 的16进制表示: %s\n", decimal, hexStr);
return 0;
}
输出:
十进制 255 的16进制表示: FF
方法3:使用 sprintf 函数
将转换结果存入字符串,便于后续处理。
#include <stdio.h>
int main() {
int decimal = 255;
char hexStr[20];
// 存储为小写
sprintf(hexStr, "%x", decimal);
printf("小写16进制: %s\n", hexStr);
// 存储为大写
sprintf(hexStr, "%X", decimal);
printf("大写16进制: %s\n", hexStr);
return 0;
}
输出:
小写16进制: ff
大写16进制: FF
| 方法 | 适用场景 | 特点 |
|---|---|---|
printf |
直接输出 | 简单快捷,适合直接打印 |
| 手动转换 | 算法学习 | 不依赖库函数,理解底层逻辑 |
sprintf |
存储结果 | 将结果存入字符串,便于后续处理 |
根据需求选择合适的方法即可!
