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

时间:2012-11-15 20:42:46

标签: java ascii

我想将一个String(简称"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)))));
}

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

3 个答案:

答案 0 :(得分:3)

首先使用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);

答案 1 :(得分:1)

你不必玩数字游戏。 (战俘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

答案 2 :(得分:0)

要处理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());