将二进制转换为十六进制数的C程序

时间:2019-09-15 06:59:59

标签: c

我是c编程语言的初学者,当我被训练做一些练习时, 我看到了

hex[index] = (char)(i + 48);

hex[index] = (char)((i-10) + 65);

而且我还不懂。

完整的代码在这里: https://codeforwin.org/2015/08/c-program-to-convert-binary-to-hexadecimal-number-system.html

1 个答案:

答案 0 :(得分:1)

hex[index] = (char)(i + 48);

采用范围为0到9的索引i并将其转换为字符'0'到'9'。字符代码“ 0”为48。

hex[index] = (char)((i-10) + 65);

做类似的事情,索引i在10到15的范围内,并将其转换为字符'A'到'F'。字符代码“ A”为65。

此转换仅适用于您最有可能使用的ASCII和派生字符编码。

有些人刚刚学会了使用某种语言,他们要做的第一件事就是建立一个网页,标题为“初学者的C编程”。但是由于他们对语言的了解非常有限,所以他们散布了错误且半熟的陈述……不幸的是,您陷入了其中一个陷阱。好吧,它可以带您学习更多和更好的知识,因为您发现该网站上的空白和错误。祝好运!

这两行都应该这样写,而不考虑链接程序的其他问题:

hex[index] = i + '0';

hex[index] = i - 10 + 'A';

或者,甚至更好:

char hex[] = "0123456789ABCDEF";