4

假设我有一个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."

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

4

2 回答 2

11

以下代码将执行您的预期:

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

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

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

于 2013-07-03T19:23:20.137 回答
4

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

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

接着

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

从评论编辑:这是使用默认字符集。如果源String不是通过您的默认值编码的,则您需要Charset为两者getBytes()和构造函数指定适当的String. 如果您碰巧使用了第一个字节为零的字符集,那么这将失败。

于 2013-07-03T19:24:51.937 回答