将整数数字转换为十六进制字符 - 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;
}
这是我将 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;
}