前言
最近想随机生成一串包含数字和字母的字符串.但是我发现把int类型的数字通过强制类型转换为char类型字符的时候出现了乱码.
原因
字符'0'
的ASCII
编码值是48
,如果直接通过类似如下的强制类型转换:1
char ch=(int) 0;
得到的字符不是'0'
,而是其他字符。
数字0到9转为’0’到’9’字符的正确做法
先计算出正确的ASCII码在转为字符
使用自动类型转换进行计算
在char类型和int类型进行计算时,会自动把char类型转为int类型,所以可以先把字符'0'
和数字
进行计算得到正确的ASCII
编码值,然后再强制类型转为字符.如下所示:1
2int i=2;
char c = (char)('0' + i);
直接计算
当然换成如下写法也是可以的.1
2int i=2;
char c = (char)(48 + i);
Character.forDigit(数字,进制)方法进行转换
1 | int i=2; |