質問

C++では、楽しかったアクセスに64ビット符号無し整数、 unsigned long long int, は以下のとおりで uint64_t.現在、Javaのlong値は64ビットったんですね、わかります。ただし、これらが署名した。

ある符号なしlong(長)として、Javaプリミティブ?使い方を教えてくださいね。

役に立ちましたか?

解決

私はそう信じていません。あなたが長い署名よりも大きく移動したいならば、私は考えますBigIntegerのには移動するための方法(箱から出して)だけです。

他のヒント

のJava 8以降では、unsigned long型(符号無し64ビット)のサポートがあります。あなたはそれを使用することができる方法があります:

Long l1 = Long.parseUnsignedLong("17916881237904312345");

これを印刷するには、単にL1を印刷することはできませんが、最初に持っています:

String l1Str = Long.toUnsignedString(l1)

そして、

System.out.println(l1Str);

いいえ、ありません。あなたは原始的longデータ型を使用し、符号の有無の問題に対処する、またはそのような<のhref = "http://java.sun.com/javase/6/docs/api/java/math/としてクラスを使用する必要がありますBigInteger.html」のrel = "noreferrer"> BigInteger でます。

いいえ、ありません。ジャワの設計者は、彼らは、符号なし整数型を好きではなかったと言っとして記録にあります。 のBigInteger の代わりを使用してください。 をhref="https://stackoverflow.com/questions/430346/why-doesnt-java-support-unsigned-ints">参照してください。

Java8 セットを提供符号なしlong操作ることを可能にするに扱う人長変数として符号なしLong、ここちよく使われるもの:

や追加、subtractions、multiplicationsにおいて同じ署名を付けるlong.

あなたが実行しようとする操作に応じて、結果は符号付きまたは符号なし、ほぼ同じです。あなたは些細な操作を使用している場合を除きしかし、あなたはBigIntegerのを使用して終了します。

のための符号なしlongを使用でき UnsignedLong クラスから グァバの図書館:

対応して様々な業務:

  • プラス
  • マイナス
  • mod
  • dividedBy

ものと思われる欠点はバイトシフト。が必要な場合はその利用できるBigIntegerからJava.

Javaのない符号なします。既述のように、incureオーバーヘッドのBigIntegerまたはJNIを使ってアクセスネイティブコードです。

org.apache.axis.typesパッケージがあります。

UnsignedLong型クラスます。

Mavenのために:

<dependency>
    <groupId>org.apache.axis</groupId>
    <artifactId>axis</artifactId>
    <version>1.4</version>
</dependency>

いくつかの方法がにに添加されるJava 8でのように思えます古き良き治療する限り、符号なしlong [署名]。回避策のように思えるが、時には助けてます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top