将数字的最后 24 位转换为十六进制

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

假设我有

uint32_t
类型的数字,并且我想获得该数字最后 24 位的十六进制表示。

除了代码的另一部分之外,我还需要输出一些信息,所以我不想逐一打印每个十六进制数字,所以我想我需要一个返回十六进制表示的函数。

有什么方法可以实现吗?我目前没有任何想法:(

例如,对于输入

0x01020304
,我需要输出
0F9190
,并且我不确定是否可以使用内置函数,因为我需要写入第一个零。

c string function hex
1个回答
0
投票

或者例如,对于输入

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.