情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

JavaのBigIntergerをバイト配列に変換した結果

JavaのBigInterger型の値をtoByteArrayメソッドでバイト配列に変換するとどのような結果になるか調べてみました。

まず、下のようなコードを実行してみます。

    for (i <- 0 until 256) {
      val bi: BigInteger = BigInteger.valueOf(i)
      val array: Array[Byte] = bi.toByteArray
      println(array.mkString(","))
    }

結果は下のようになりました。

0
1
2
3
(中略)
124
125
126
127
0,-128
0,-127
0,-126
0,-125
(中略)
0,-4
0,-3
0,-2
0,-1

このことから、正数の場合は最上位ビットが1の場合には頭に新しいバイト0が付加されることが分かります。

次に、下のようなコードを実行してみます。

    for (i <- 0 until -257 by -1) {
      val bi: BigInteger = BigInteger.valueOf(i)
      val array: Array[Byte] = bi.toByteArray
      println(array.mkString(","))
    }

結果は下のようになりました。

0
-1
-2
-3
(中略)
-125
-126
-127
-128
-1,127
-1,126
-1,125
-1,124
(中略)
-1,3
-1,2
-1,1
-1,0

このことから、負数の場合は最上位ビットが1になることが分かります。

次に、下のようなコードを実行してみます。

    val bi: BigInteger = BigInteger.valueOf(500)
    val array: Array[Byte] = bi.toByteArray
    println(array.mkString(","))

結果は下のようになりました。

1,-12

このことから、ビッグエンディアンであることが分かります。

pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-java, scala