我正在学习 C,但我想不出一个 K&R 练习, list :
Exercise 2-3, Write the function
htoi(s)
, which converts a string of hexadecimal digits (including an optional0x
or0X
) into its equivalent integer value. The allowable digits are0
through9
,a
throughf
andA
throughF
.
我想我需要在这里做一些递归,我只是想我不太了解编号类型,以及它们的各种转换方法等。
有人能给我一些关于如何最好地理解它的指示吗,我不是在找人牵着我的手,而是指导我找到一种正确理解的方法,这样我就可以尽可能以最优雅的形式写出来,而不是 printf("%x", skill);
最佳答案
不需要递归。您只需要在字符串上向后循环(即从单位列开始),将单个数字转换时间与它的基数位置乘数相加。这是伪代码,不处理可选的 0x 前缀(并且不检查溢出的可能性):
long total = 0;
long multiplier = 1;
for (int i = string.length - 1; i >= 0 i--)
{
digit = ConvertSingleHexDigittoInt(string[i]);
total += digit * multiplier;
multiplier *= 16;
}
我把 ConvertSingleHexDigittoInt() 的简单实现留给了你:)
关于c - 十六进制到十进制的转换 [K&R 练习],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/788026/