你的代码的含义是把x转换成char,16进制
所以a[] 里面存放的是 '0'-'9'或者 'A'-'Z',而不是0-9
你的代码其实不用switch那么复杂
直接
a[i] = x % 16 > 9 ? x % 16 - 10 + 'A' : x % 16 + '0';
即可
main,不是nain
'0'是ASCII值48
'\0'是ASCII值0
空格的ASCII码值为32;
数字0到9的ASCII码值分别为48到57;
大写字母“A”到“Z”的ASCII码值分别为65到90;
小写字母“a”到“z”的ASCII码值分别为97到到122。