BigInteger中的Java存储字符串

BigInteger中的Java存储字符串,java,string,biginteger,Java,String,Biginteger,我必须在BigInteger中存储一个字符串(非数字,可以包含任何UTF8字符),以执行一些数学运算。我需要的转换是确定性的哪一个 BigInteger mybigint = new BigInteger(mystring.getBytes()); 似乎不是 我还需要能够将它从BigInteger转换回String。如果我将一个字符串转换为BigInteger,然后再转换回来,那么之后它需要是相同的 有人知道怎么做吗? 提前谢谢你 不要这样做。基本上你没有数字信息。不要假装它是数字信息 定义“

我必须在BigInteger中存储一个字符串(非数字,可以包含任何UTF8字符),以执行一些数学运算。我需要的转换是确定性的哪一个

BigInteger mybigint = new BigInteger(mystring.getBytes());
似乎不是

我还需要能够将它从BigInteger转换回String。如果我将一个字符串转换为BigInteger,然后再转换回来,那么之后它需要是相同的

有人知道怎么做吗?
提前谢谢你

不要这样做。基本上你没有数字信息。不要假装它是数字信息


定义“数学运算”的含义,并编写一个类来执行它们
BigInteger几乎肯定是这里的错误表示。

这是确定性的:

BigInteger mybigint = new BigInteger(mystring.getBytes("UTF-8"));
您可以使用

new String(mybigint.toByteArray(), "UTF-8");

我不能排除这个过程有某种用处,但如果你不确定为什么要这样做,请毫不犹豫地提出来。

非数字字符串怎么能称为整数?你在说什么“数学运算”?什么是“HAPPY”*2?如果你想做某种加密,请先做第一部分(转换为字节),但不要使用大整数,有很多标准的方法可以转换字节数组。我需要像BigInteger一样的字符串,因为我必须使用一个给定的类来计算字符串的(数学)承诺。这是证明给定的是此字符串所必需的…只有“原始”BigInteger才会转换回字符串,因此这应该不是问题。请记住,并非所有字节序列都是有效的UTF-8字符串。您将无法将每个
biginger
转换为
String
。是的,这是一个重要的精度。大多数是无效的。但我现在无法想象为什么你要对大整数进行数学运算,然后用结果生成一个新字符串。在我看到理由之前,我总是很难说“不要这样做”,但我和所有人一样怀疑。很好。别忘了接受答案。我们很好奇这种需求:你能解释一下吗?:)我需要字符串作为BigInteger,因为我必须使用一个给定的类来计算对字符串的(数学)承诺。这需要能够在不暴露字符串本身的情况下发布对字符串的承诺。转换回字符串实际上是不需要的,但它使它更容易,因为我不能在我想要的地方存储字符串,但我可以重新转换BigInteger…好的。这是有道理的,但也许你应该使用散列函数。这是不可逆的,但这使它更安全。例如阅读。