C语言十进制转十六进制,如何实现?

99ANYc3cd6
预计阅读时长 9 分钟
位置: 首页 C语言 正文

方法1:使用标准库函数 printf

直接使用 printf 的格式说明符 %x%X 可以将整数以十六进制形式输出。

c语言十进制数转换成十六进制数
(图片来源网络,侵删)
#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:手动转换算法

如果需要将十进制数转换为十六进制字符串(例如存储到数组中),可以手动实现转换算法。

步骤

  1. 处理0的特殊情况
  2. 不断除以16,记录余数,直到商为0。
  3. 余数对应的十六进制字符(0-9, a-f)。
  4. 逆序排列余数得到最终结果。

代码实现

#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

c语言十进制数转换成十六进制数
(图片来源网络,侵删)
#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 或手动转换算法。
c语言十进制数转换成十六进制数
(图片来源网络,侵删)
-- 展开阅读全文 --
头像
2025计算机二级C语言真题难度如何?
« 上一篇 01-05
dede orderby倒序怎么用?
下一篇 » 01-05

相关文章

取消
微信二维码
支付宝二维码

目录[+]