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

问题描述 投票:0回答:1

这是我的用于将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;
    }
}

没有这么多切换用例,有没有办法写出更好的东西?

我尝试过的内容:

char * returnHex(int i) {

    char * hex = malloc(5);

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

    return hex; 
}

但是这将返回一个char数组,而不是我需要的char。谢谢!

c int hex
1个回答
0
投票

只需声明一个字符数组,如

const char hex[] = "0123456789abcdef";

和使用

if ( i < sizeof( hex ) - 1 )
{
    return hex[i];
}
else
{
    return hex[0];  // or ant other value
}
© www.soinside.com 2019 - 2024. All rights reserved.