首页 > 解决方案 > '0' 的代码 ascii 从 48 变为 0 我该如何解决?

问题描述

我正在尝试创建一个表,其中包含以 16 为基数的所有数字(它们是字符)的 ASCII 代码,但是字符“0”没有按预期工作,在循环“for”中我可以看到代码ASCII 保持在 48,但一旦我退出它并尝试再次查看 '0' 的代码 ASCII,它现在已移动到 0

for (int i = 0; i < 16; ++i) {
    if(i>9){
        tableaubase[i]=48+i+7;
    } else{
        tableaubase[i]=48+i;
    }
    printf("tableaubase[%d] : %d \n", i, tableaubase[i]);
    printf("tableaubase[%d] : %d \n", 0, tableaubase[0]);

}

printf("tableaubase[%d] : %d \n", 0, tableaubase[0]);

标签: c

解决方案


我相信你想要

if (i < 10) {
    tableaubase[i] = '0' + i;
} else{
    tableaubase[i] = 'A' + (i-10);
}

请注意,这需要基于 ASCII 的机器。基于 EBCDIC 的机器上的字母不是连续的。

这不会改变 发生的事情i == 0,这已经是正确的。这只是使代码更具可读性。


推荐阅读