【发布时间】:2011-07-02 15:51:23
【问题描述】:
此代码会将一个十六进制数字转换为十进制值。
int value;
// ch is a char variable holding a hexadecimal digit
if (isxdigit(ch))
if (isdigit(ch))
value = ch - '0';
else
value = tolower(ch) - 'a' + 10;
else
fprintf(stderr, "%c is not a valid hex digit", ch);
虽然我不完全理解它是如何工作的。我可以看到从 char 变量中减去不同的东西,具体取决于它是数字还是字母。我可以理解数字转换的部分,但我不明白为什么当字符是字母时必须将 10 添加到值中。
【问题讨论】: