c语言10进制转16进制

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

方法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,可以手动实现十进制到十六进制的转换。

步骤:

  1. 反复除以16,记录余数(0-15)。
  2. 将余数转换为对应的16进制字符(0-9,A-F)。
  3. 逆序排列余数,得到最终的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 存储结果 将结果存入字符串,便于后续处理

根据需求选择合适的方法即可!

-- 展开阅读全文 --
头像
织梦会员注册手机验证
« 上一篇 今天
dede 模板路径修改
下一篇 » 今天

相关文章

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

目录[+]