gpt4 book ai didi

c - C 中的整数到字符串 itox 函数

转载 作者:行者123 更新时间:2023-11-30 18:27:33 29 4
gpt4 key购买 nike

我从某个地方得到了这个,但我不太明白它背后的含义。这实际上是如何运作的?

void itox(unsigned int i, char *s) 
{
unsigned char n;

s += 4;
*s = '\0';

for (n = 4; n != 0; --n) {
*--s = "0123456789ABCDEF"[i & 0x0F];
i >>= 4;
}
}

谢谢。

最佳答案

它假设s是一个长度为5的缓冲区(包括空终止符),并在那里写入i的十六进制表示。结果是 i 模 65536 的十六进制表示(对于许多旧系统,unsigned int 的范围为 065535 )。

s += 4; 
*s = '\0';

这将到达 s 的末尾,并在那里放置一个空终止符。

for (n = 4; n != 0; --n) {

现在我们向后循环结果字符串并填充适当的char

"0123456789ABCDEF"[i & 0x0F]; 

这将选择正确的字符i & 0x0F 获取最低有效的十六进制值,并通过将其用作 “0123456789ABCDEF” 上数组访问的下标,获得相应的字符。

*--s = ...

将获得的字符放置在正确的位置,并且指针再次减少,以便可以在下一次循环中填充下一个位置。

i >>= 4; 

我们现在将数字移动四位,删除刚刚转换为十六进制数字的四位。现在接下来的四位将是最低有效的十六进制数字。

<小时/>

示例

让我们采用号码58008。十六进制为 0xE298。 Mod 16 为 8,因此 "0123456789ABCDEF"[8]; 得到 "8"

然后我们将其移位四位,得到 3625。 Mod 16 是 9,我们得到 "9"。下一个类次后,我们得到 226,模 16 为 2,一个类次后,我们得到 14“0123456789ABCDEF”[14]“E”

向后组合这些结果,您将得到 E298

关于c - C 中的整数到字符串 itox 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54705663/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com