假设我有
uint32_t
类型的数字,并且我想获得该数字最后 24 位的十六进制表示。
除了代码的另一部分之外,我还需要输出一些信息,所以我不想逐一打印每个十六进制数字,所以我想我需要一个返回十六进制表示的函数。
有什么方法可以实现吗?我目前没有任何想法:(
例如,对于输入
0x01020304
,我需要输出0F9190
,并且我不确定是否可以使用内置函数,因为我需要写入第一个零。
或者例如,对于输入
我需要输出0x01020304
0F9190
当然不可能。但如果您的数字是
1020304
(十进制),那么这个数字以 16 进制(十六进制)表示是 0x0F9190
如何转换?
void convert24b(const uint32_t val, char *buff)
{
const char *digits = "0123456789ABCDEF";
for(int shift = 20; shift >=0; shift -= 4)
*buff++ = digits[(val >> shift) & 0xf];
}
int main(void)
{
char h[10];
convert24b(1020304, h);
puts(h);
}