You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从char数组获取整数为何得到ASCII值而非数字?求解决办法

为什么char转int得到49而不是1?解决办法看这里

嘿,这个问题我刚学Java的时候也懵过!咱们一步步来拆解:

问题原因

在Java里,char类型本质上是UTF-16编码的无符号16位整数,每个字符都对应一个特定的编码值。你拿到的'1'这个字符,对应的ASCII(属于UTF-16的子集)编码就是49,所以当你直接把char赋值给int变量时,Java会自动把这个编码值转成int类型,自然就输出49了,而不是你预期的数字1。

解决办法

这里有两种常用的靠谱方法:

方法1:利用ASCII码偏移(高效且直观)

因为阿拉伯数字字符的ASCII码是连续的,'0'对应的编码是48,'1'是49,以此类推。所以只要用目标字符减去'0',就能得到对应的数字:

String inputs = "123";
char[] inputs2 = inputs.toCharArray();
int a = inputs2[0] - '0'; // 49 - 48 = 1
System.out.println(a); // 输出1

方法2:用Character.getNumericValue()方法(更通用)

如果你的场景里可能出现非阿拉伯数字的字符(比如罗马数字、全角数字),这个方法会更稳妥,它能直接返回字符对应的数值:

String inputs = "123";
char[] inputs2 = inputs.toCharArray();
int a = Character.getNumericValue(inputs2[0]);
System.out.println(a); // 输出1

需要注意的是,如果字符不是有效的数字,getNumericValue()会返回-1或者-2,所以如果要处理非数字场景,记得加判断哦。

内容的提问来源于stack exchange,提问作者PulseBeat_02

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:13:23