[英]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;
}
Output:
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 表将数字转换为字符。
假设我们有数字 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');
当“数字”超过 10 时,您得到的第一个字母是“B”。
那是因为您从“数字”的当前值开始计算字母。
因此,当数字的值为 12 时,您将其减去 10,并将值 2 存储在数字“A”+ 2 =“C”中。
你只需数数字母。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.