假设我有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."
我怎样才能做到这一点? 感谢
答案 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
未通过默认值进行编码,则您需要为Charset
和getBytes()
的构造函数指定相应的String
。如果你正在使用第一个字节为零的字符集,那么这将失败。