为什么该算法会将十进制数转换为十六进制数?
Why does this algorithm convert decimal to hexadecimal numbers?
我不太明白这种算法是如何工作的...
代码:
#include <stdio.h>
int main(void){
int number = 0;
while(number < 16){
if(number < 10){
printf("decimal: \t%d\n", number);
printf("hexadec.: \t%c\n", number + '0');
}else{
printf("decimal: \t%d\n", number);
printf("hexadec.: \t%c\n", number - 10 + 'A');
}
printf("\n");
number++;
}
return 1;
}
输出:
decimal: 0
hexadec.: 0
decimal: 1
hexadec.: 1
decimal: 2
hexadec.: 2
decimal: 3
hexadec.: 3
decimal: 4
hexadec.: 4
decimal: 5
hexadec.: 5
decimal: 6
hexadec.: 6
decimal: 7
hexadec.: 7
decimal: 8
hexadec.: 8
decimal: 9
hexadec.: 9
decimal: 10
hexadec.: A
decimal: 11
hexadec.: B
decimal: 12
hexadec.: C
decimal: 13
hexadec.: D
decimal: 14
hexadec.: E
decimal: 15
hexadec.: F
它打印出的正是我想要的,但我不明白它背后的过程。如果我没记错的话 integer + 'character' 通过ascii table.
将数字转换为字符
假设我们有数字 11,那么 11 - 10 = 1 在 ascii 中是 49,A 在 ascii 中是 65。那么 49 + 65 = 66 是怎么得来的。
我敢肯定这种想法是完全错误的,我只是想告诉你我认为它在后台做了什么。
当你改变时
printf("hexadec.: \t%c\n", number - 10 + 'A');
对此:
printf("hexadec.: \t%c\n", number - 9 + 'A');
当 'number' 大于 10 时得到的第一个字母是 'B'。
那是因为你从 'number' 的当前值开始计算字母数。
所以当 number 的值为 12 时,你用 10 减去它,你将值 2 存储在 number 中
'A' + 2 = 'C'.
你只要数一下字母就可以了。
我不太明白这种算法是如何工作的...
代码:
#include <stdio.h>
int main(void){
int number = 0;
while(number < 16){
if(number < 10){
printf("decimal: \t%d\n", number);
printf("hexadec.: \t%c\n", number + '0');
}else{
printf("decimal: \t%d\n", number);
printf("hexadec.: \t%c\n", number - 10 + 'A');
}
printf("\n");
number++;
}
return 1;
}
输出:
decimal: 0
hexadec.: 0
decimal: 1
hexadec.: 1
decimal: 2
hexadec.: 2
decimal: 3
hexadec.: 3
decimal: 4
hexadec.: 4
decimal: 5
hexadec.: 5
decimal: 6
hexadec.: 6
decimal: 7
hexadec.: 7
decimal: 8
hexadec.: 8
decimal: 9
hexadec.: 9
decimal: 10
hexadec.: A
decimal: 11
hexadec.: B
decimal: 12
hexadec.: C
decimal: 13
hexadec.: D
decimal: 14
hexadec.: E
decimal: 15
hexadec.: F
它打印出的正是我想要的,但我不明白它背后的过程。如果我没记错的话 integer + 'character' 通过ascii table.
将数字转换为字符假设我们有数字 11,那么 11 - 10 = 1 在 ascii 中是 49,A 在 ascii 中是 65。那么 49 + 65 = 66 是怎么得来的。 我敢肯定这种想法是完全错误的,我只是想告诉你我认为它在后台做了什么。
当你改变时
printf("hexadec.: \t%c\n", number - 10 + 'A');
对此:
printf("hexadec.: \t%c\n", number - 9 + 'A');
当 'number' 大于 10 时得到的第一个字母是 'B'。
那是因为你从 'number' 的当前值开始计算字母数。
所以当 number 的值为 12 时,你用 10 减去它,你将值 2 存储在 number 中 'A' + 2 = 'C'.
你只要数一下字母就可以了。