方法1:使用标准库函数 printf
直接使用 printf 的格式说明符 %x 或 %X 可以将整数以十六进制形式输出。

(图片来源网络,侵删)
#include <stdio.h>
int main() {
int decimal = 255;
// 小写十六进制
printf("小写十六进制: %x\n", decimal); // 输出: ff
// 大写十六进制
printf("大写十六进制: %X\n", decimal); // 输出: FF
return 0;
}
说明:
%x:输出小写十六进制字母(a-f)。%X:输出大写十六进制字母(A-F)。
方法2:手动转换算法
如果需要将十进制数转换为十六进制字符串(例如存储到数组中),可以手动实现转换算法。
步骤:
- 处理0的特殊情况。
- 不断除以16,记录余数,直到商为0。
- 余数对应的十六进制字符(0-9, a-f)。
- 逆序排列余数得到最终结果。
代码实现:
#include <stdio.h>
#include <string.h>
void decimalToHex(int decimal, char *hexStr) {
if (decimal == 0) {
strcpy(hexStr, "0");
return;
}
char temp[20]; // 临时存储字符
int index = 0;
int isNegative = 0;
if (decimal < 0) {
isNegative = 1;
decimal = -decimal;
}
while (decimal > 0) {
int remainder = decimal % 16;
if (remainder < 10) {
temp[index++] = remainder + '0'; // 0-9
} else {
temp[index++] = remainder - 10 + 'a'; // a-f
}
decimal /= 16;
}
if (isNegative) {
temp[index++] = '-';
}
temp[index] = '\0'; // 字符串结束符
// 逆序排列
int len = strlen(temp);
for (int i = 0; i < len / 2; i++) {
char t = temp[i];
temp[i] = temp[len - 1 - i];
temp[len - 1 - i] = t;
}
strcpy(hexStr, temp);
}
int main() {
int decimal = -255;
char hexStr[20];
decimalToHex(decimal, hexStr);
printf("十六进制: %s\n", hexStr); // 输出: -ff
return 0;
}
说明:
- 该函数支持负数转换。
- 结果以字符串形式存储,便于后续处理。
方法3:使用 sprintf
如果需要将十六进制结果存储到字符串中,可以使用 sprintf。

(图片来源网络,侵删)
#include <stdio.h>
int main() {
int decimal = 255;
char hexStr[20];
sprintf(hexStr, "%x", decimal); // 小写
printf("小写十六进制: %s\n", hexStr); // 输出: ff
sprintf(hexStr, "%X", decimal); // 大写
printf("大写十六进制: %s\n", hexStr); // 输出: FF
return 0;
}
| 方法 | 适用场景 | 特点 |
|---|---|---|
printf("%x", num) |
直接输出 | 简单快捷,无法存储结果 |
| 手动转换算法 | 需要字符串存储 | 可自定义格式(如前缀 0x) |
sprintf |
存储到字符串 | 类似 printf,但结果存入变量 |
推荐:
- 如果只是临时输出,直接用
printf。 - 如果需要存储或进一步处理,用
sprintf或手动转换算法。

(图片来源网络,侵删)
