0

どこでもUInt64を使用する.NETからコードを移植しようとしていますが、ほとんどの場合BigIntegerの使用に成功しましたが、残念ながら、16進値のテーブルから値をBigIntegerにロードするという非常に単純なものに行き詰まりました。

ある時点で、正の0x990951BAでBigIntegerをロードしたいのですが、これを行うために見た唯一の方法は、BigInteger b = BigInteger.valueOf(0x990951BA)を使用することでした。もちろん、Javaは引数を長いものとして扱い、それを作成するため、これは機能しません。ネガティブ。

どうすればこれを達成できますか?

ありがとうございました。

4

2 に答える 2

2

longJavaでは64ビットであるため、の直接の代わりとして使用できるはずですUInt64longリテラルを指定するには、定数にを追加して、定数ではなくlとして認識されるようにします。longint

BigInteger b = BigInteger.valueOf(0x990951BAl);

長い間でも大きすぎる値のフォールバックは、テキストとして解析することです。

BigInteger b = new BigInteger("990951BA", 16);
于 2012-04-16T12:32:13.723 に答える
0

unsigned longを使用するコードを移植しているため、 GoogleGuavaからUnsignedLongを調べることもできます。(また、同じパッケージ内のUnsignedLongsヘルパークラス)。

于 2012-04-16T12:52:13.623 に答える