字符串数组转字符十进制ASCII值失败,求正确转换方案
解决字符转十进制编码值的问题
嘿,我完全懂你踩的坑了——你想用Integer.parseInt()把单个字母字符串转成对应的十进制编码值,但这个方法本身是用来解析数字格式字符串的(比如把"123"转成整数123),对字母字符串肯定会报错,因为它根本不是合法的数字格式啊!
要获取字母对应的十进制ASCII(Unicode的子集)编码值,其实很简单:只需要把字符串里的字符取出来,再转换成int类型就行——因为char类型在Java里本质就是16位的Unicode编码值,转成int就能直接得到十进制数值。
修改你的方法如下:
public static int[] String2Int(String[] k){ int[] arrayBuffer = new int[k.length]; for (int i=0; i < k.length; i++) { // 取出每个单字符字符串中的字符 char charFromStr = k[i].charAt(0); // 将char转成int,得到对应的十进制编码值 arrayBuffer[i] = (int) charFromStr; } return arrayBuffer; }
测试你的{"H","E","L","L","O"}数组,调用这个方法后会得到结果[72, 69, 76, 76, 79],正好对应每个字母的ASCII十进制值。
额外提一句:如果你的数组里有可能出现多字符的元素,可以加个判断避免IndexOutOfBoundsException,不过看你的场景都是单个字符,当前代码完全够用啦。
内容的提问来源于stack exchange,提问作者Tor
相关产品推荐
相关产品推荐

