2012-04-16 34 views
0

我試圖從.NET中移植一個代碼到處使用UInt64,我主要成功地使用BigInteger,但不幸的是,我已經成爲卡住的東西非常簡單,因爲加載一個BigInteger,其值來自十六進制值的表格。加載BigInteger與一個大的積極的數字

在某些時候,我想加載一個BigInteger與積極 0x990951BA,只有這樣,我看到了這樣做是與BigInteger的B = BigInteger.valueOf(0x990951BA),這當然不行,因爲Java的治療參數作爲一個長期,使其消極。

我該如何做到這一點?

謝謝。

回答

2

long是64位的Java,因此您應該可以使用它作爲UInt64的直接替代品。要指定long文字,請將l附加到該常量,以將其識別爲long而不是int

BigInteger b = BigInteger.valueOf(0x990951BAl); 

對於長度過大的值的回退是將其解析爲文本。

BigInteger b = new BigInteger("990951BA", 16); 
+0

一直在使用C#太久了! :)謝謝你,我沒有意識到Java將我的十六進制值視爲一個整數而不是很長! – 2012-04-16 12:37:45

0

既然你移植使用無符號多頭代碼,您可能還需要尋找到UnsignedLongGoogle Guava。 (還有同一個包中的UnsignedLongs幫助器類)。