将整数数字转换为十六进制字符 - C 编程

Converting int digit into hex char - C programming

这是我将 int 最多 15 转换为十六进制 char 的代码:

static char intToHex(int i)
{
    switch (i)
    {
    case 0:
        return '0';
    case 1:
        return '1';
    case 2:
        return '2';
    case 3:
        return '3';
    case 4:
        return '4';
    case 5:
        return '5';
    case 6:
        return '6';
    case 7:
        return '7';
    case 8:
        return '8';
    case 9:
        return '9';
    case 10:
        return 'a';
    case 11:
        return 'b';
    case 12:
        return 'c';
    case 13:
        return 'd';
    case 14:
        return 'e';
    case 15:
        return 'f';
    default:
        break;
    }
}

有没有办法写得更好,不用那么多 switch case?

我尝试了什么:

char * returnHex(int i) {

    char * hex = malloc(5);

    sprintf(hex, "%x", i);
    puts(hex);

    return hex; 
}

但是这个 returns 字符数组不是我需要的 char。 谢谢!

声明一个字符数组就好

const char hex[] = "0123456789abcdef";

并使用

if ( i < sizeof( hex ) - 1 )
{
    return hex[i];
}
else
{
    return hex[0];  // or ant other value
}

另一种方式:

char intToHex(int i)
{
    return (i < 10) : '0' + i : 'a' + i - 10;
}