c语言10进制转16进制函数

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

C语言十进制转十六进制函数

以下是一个将十进制数转换为十六进制字符串的C语言函数:

c语言10进制转16进制函数
(图片来源网络,侵删)
#include <stdio.h>
#include <stdlib.h>
char* decimalToHex(int decimal) {
    // 分配足够的内存来存储十六进制字符串(包括可能的负号和空终止符)
    char* hexStr = (char*)malloc(sizeof(char) * 9); // 最多8位十六进制数 + 空字符
    if (hexStr == NULL) {
        return NULL; // 内存分配失败
    }
    sprintf(hexStr, "%X", decimal); // 使用%X格式说明符转换为十六进制
    return hexStr;
}
// 使用示例
int main() {
    int num = 255;
    char* hex = decimalToHex(num);
    if (hex != NULL) {
        printf("十进制 %d 转换为十六进制: %s\n", num, hex);
        free(hex); // 记得释放分配的内存
    }
    return 0;
}

替代实现(不使用sprintf)

如果你不想使用sprintf,这里有一个手动实现的版本:

#include <stdlib.h>
char* decimalToHexManual(int decimal) {
    // 分配足够的内存来存储十六进制字符串
    char* hexStr = (char*)malloc(sizeof(char) * 9);
    if (hexStr == NULL) {
        return NULL;
    }
    // 处理0的特殊情况
    if (decimal == 0) {
        hexStr[0] = '0';
        hexStr[1] = '\0';
        return hexStr;
    }
    int isNegative = 0;
    unsigned int num;
    // 处理负数
    if (decimal < 0) {
        isNegative = 1;
        num = (unsigned int)(-decimal);
    } else {
        num = (unsigned int)decimal;
    }
    int i = 0;
    while (num != 0) {
        int temp = num % 16;
        if (temp < 10) {
            hexStr[i++] = temp + '0';
        } else {
            hexStr[i++] = temp - 10 + 'A';
        }
        num /= 16;
    }
    // 添加负号(如果需要)
    if (isNegative) {
        hexStr[i++] = '-';
    }
    hexStr[i] = '\0';
    // 反转字符串
    int start = 0;
    int end = i - 1;
    while (start < end) {
        char temp = hexStr[start];
        hexStr[start] = hexStr[end];
        hexStr[end] = temp;
        start++;
        end--;
    }
    return hexStr;
}

注意事项

  1. 第一个实现使用了sprintf,更简洁但依赖于标准库函数
  2. 第二个实现是手动转换,展示了转换的基本原理
  3. 两个函数都返回动态分配的内存,调用者需要负责释放
  4. 对于大数或特殊需求,可能需要调整内存分配大小
  5. 如果不需要字符串形式,可以直接使用printf的%X格式说明符输出
c语言10进制转16进制函数
(图片来源网络,侵删)
-- 展开阅读全文 --
头像
C语言合法整型常数有哪些?
« 上一篇 02-09
织梦SQL如何调用文章标题?
下一篇 » 02-09
取消
微信二维码
支付宝二维码

目录[+]