如何将String转换为BigInteger表示并返回Java?

时间:2013-07-03 19:18:55

标签: java string biginteger type-conversion

假设我有String,我们称之为foo。此String可以包含任何值,例如字母,数字,特殊字符,UTF-8特殊字符,例如á等。例如,这可能是一个真正的价值:

"Érdekes szöveget írtam a tegnap, 84 ember olvasta."

我想有以下两种方法:

public BigInteger toBigInteger(String foo)
{
    //Returns a BigInteger value that can be associated with foo
}

public String fromBigInteger(BigInteger bar)
{
    //Returns a String value that can be associated with bar
}

然后:

String foo = "Érdekes szöveget írtam a tegnap, 84 ember olvasta.";
System.out.println(fromBigInteger(toBigInteger(foo)));
//Output should be: "Érdekes szöveget írtam a tegnap, 84 ember olvasta."

我怎样才能做到这一点? 感谢

2 个答案:

答案 0 :(得分:10)

以下代码将按预期执行:

public BigInteger toBigInteger(String foo)
{
    return new BigInteger(foo.getBytes());
}

public String fromBigInteger(BigInteger bar)
{
    return new String(bar.toByteArray());
}

但是我不明白为什么你需要这样做,我会对你的解释感兴趣。

答案 1 :(得分:4)

忽略“你为什么要这么做?”

String foo = "some text";
byte[] fooBytes = foo.getBytes();
BigInteger bi = new BigInteger(fooBytes);

然后

foo = new String(bi.toByteArray());

根据评论进行修改:这是使用默认字符集。如果源String未通过默认值进行编码,则您需要为CharsetgetBytes()的构造函数指定相应的String。如果你正在使用第一个字节为零的字符集,那么这将失败。