2016-11-23 68 views
-3

我有代码这需要一个BigInteger转换的BigInteger为字符串,然后回的BigInteger

48451322989516520225703217657832557994348537500303367742400825550923100192302069868489479191146175399344044876949227990959739850227034985347595351425385263774028421913031512265649684935654507691239234667482091135118571200215310568615906290473167269182601320011893758047720172195848415075205065039282385885704 

我执行bigint.toString(16)后,我得到这个字符串:

44ff39b391fe68e6522d4e2fd99a6c5c77afdae691357f04e5e504790460e7a8e30b3d988e2c1ad316660af7d4e70c012ab711bb77a238f7c2281903523446677f3f26b5d7338c77939f9d97268125adf309aba85e9113f895e9d5179987ab02f3cc255c83e05579664cb08f79390373cb7cce5d280c6647091721567e029a08 

这包含其中的字母,所以在我尝试将其转换回BigInteger后,我无法通过它来告诉我它不是数字中字母的数字b/c。

如何正确地从BigInteger转到字符串,然后回到BigInteger?这里是我的代码是什么:

BigInteger decryptedBI = resultBI.modPow(keyD, keyN); // my biginteger 
String decrypted = decryptedBI.toString(16); // converted it to a string value 
System.out.println(decryptedBI); 
System.out.println(decrypted); // this is the decrypted hash 
+2

我建议你阅读[BigInteger的]的文档(http://docs.oracle.com/javase/7/docs/ api/java/math/BigInteger.html#BigInteger(java.lang.String,%20int))。 – Paul

回答

1

BigInteger有一个构造函数在String的价值和int表示的基数(在你的情况,16)。

API docs,但这里是你如何使用它:

BigInteger newBI = new BigInteger(myString, 16); 
+0

谢谢,它现在有效。我没有意识到还有第二个参数。 – Kaska