Java - 将一串字母转换为相应 ascii 的整数



我想将一个字符串,比如说"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));
}

但是,这个问题似乎真的与操作字符串有关。我可能会做的是简单地累积字符串中的数字,然后从末尾的字符串创建一个 BI:

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

最新更新