Java – 将字符串转换为相应的ascii的int?

我想将一个String( 979899 "abc" )转换为带有相应ascii的int:在本例中为979899

我遇到了两个问题:

1)我写的只适用于ascii长两个字符的字符

2)因为这些数字变得很大,我不能使用多头而且我在使用BigIntegers时遇到了麻烦。

这是我到目前为止:

 BigInteger mInt = BigInteger.valueOf(0L); for (int i = 0; i<mString.length(); i++) { mInt = mInt.add(BigInteger.valueOf( (long)(mString.charAt(i)*Math.pow(100,(mString.length()-1-i))))); } 

任何建议都会很棒,谢谢!

首先使用StringBuilder所有连接然后从结果中创建BigInteger有什么问题? 这似乎比你现在做的要简单得多。

 String str = "abc"; // or anything else StringBuilder sb = new StringBuilder(); for (char c : str.toCharArray()) sb.append((int)c); BigInteger mInt = new BigInteger(sb.toString()); System.out.println(mInt); 

你不必玩数字游戏。 (战俘100等)。 只需获取数字字符串,然后传递给构造函数。

 final String s = "abc"; String v = ""; final char[] chars = s.toCharArray(); for (int i = 0; i < chars.length; i++) { v += String.valueOf((int) chars[i]); } //v = "979899" now BigInteger bigInt = new BigInteger(v); //BigInteger BigDecimal bigDec = new BigDecimal(v); // or BigDecimal 

要处理n位数字,您必须每次乘以10的不同幂。 你可以用循环来做到这一点:

 BigInteger appendDigits(BigInteger total, int n) { for (int i = n; i > 0; i /= 10) total = total.multiply(10); return total.plus(new BigInteger(n)); } 

但是,这个问题似乎真的是关于操纵字符串。 我可能会做的只是在字符串中累积数字,并在最后从String创建一个BI:

 StringBuilder result = new StringBuilder(); for (char c : mString.getBytes()) result.append(String.valueOf(c)); return new BigInteger(result.toString());