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

Java中字符转ASCII拼接后转int触发NumberFormatException的解决方法

问题原因分析

你碰到的NumberFormatException核心原因很简单:拼接出来的数字超出了Java int类型的取值上限。

Java里的int是32位有符号整数,它的最大值是2147483647,而你得到的字符串"9056737152"对应的数值远大于这个数,Integer.parseInt()自然无法处理,直接抛出异常。

解决方案

根据你的需求,有两种靠谱的处理方式:

1. 改用long类型(推荐,适合大多数场景)

long是64位有符号整数,最大值能到9223372036854775807,完全能容纳你当前的结果,甚至更长一点的ASCII拼接字符串。只需要修改两行代码:

// 把int换成long,用Long.parseLong代替Integer.parseInt
long foo = Long.parseLong(nm);
System.out.println(foo);

2. 用BigInteger处理超大数字(极端场景)

如果以后你的输入字符串更长,拼接后的数字超过long的范围,那就用Java的BigInteger类,它支持任意大小的整数运算:

import java.math.BigInteger;

// ... 其他代码不变
BigInteger foo = new BigInteger(nm);
System.out.println(foo);
额外优化建议

你的代码里用nm+=拼接字符串效率很低,因为每次拼接都会创建新的String对象。建议换成StringBuilder来提升性能:

String m = "Z8IG4";
StringBuilder nm = new StringBuilder(); // 用StringBuilder代替空String
for(int i=0; i<m.length(); i++){
    char c = m.charAt(i);
    int cm = (int) c;
    nm.append(cm); // 用append代替+=
}
long foo = Long.parseLong(nm.toString());
System.out.println(foo);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:39:23