【问题标题】:Java - Convert a String of letters to an int of corresponding ascii?Java - 将一串字母转换为对应ascii的int?
【发布时间】:2012-11-04 13:04:28
【问题描述】:

我想将一个字符串(比如"abc")转换为具有相应 ascii 的 int:在本例中为 979899

我遇到了两个问题:

1) 我写的内容仅适用于 ascii 长度为两个字符且

的字符

2) 由于这些数字变得非常大,我不能使用 long,而且我在使用 BigInteger 时遇到了麻烦。

这是我目前所拥有的:

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)))));
}

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

【问题讨论】:

标签: java ascii


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 假设字符串 s 会很长,使用StringBuilder 性能可能会更好。重复的字符串连接可能很昂贵。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-31
      • 2020-09-03
      • 1970-01-01
      • 2023-03-24
      • 2013-02-08
      相关资源
      最近更新 更多