0

Java の ByteBuffer について学んだばかりですが、JVM が複数のデータ型を ByteBuffer に格納する方法に少し混乱しています。これはコードです:

public static void main(String[] args) {
    ByteBuffer BF1 = ByteBuffer.allocate(30);
    BF1.putChar('A');
    BF1.putChar('B');
    BF1.putInt(129);
    BF1.putDouble(0.98);
    BF1.putFloat(8.9f);

    byte[] BA1 = new byte[BF1.position()];
    BF1.position(0);
    BF1.get(BA1, 0, BA1.length);
    System.out.print("BA1 =");
    for(byte a: BA1)
         System.out.print(" " + a);
}

/*output
  BA1 = 0 65 0 66 0 0 0 -127 63 -17 92 40 -11 -62 -113 92 65 14 102 102 **/

JVM は Char 型を 2 バイト、int 型を 4 バイト、double 型を 8 バイト、Float 型を 4 バイトとして書き込むことを理解しています。したがって、ByteBuffer の入力値は次のようになります。

A = 0 65, B = 0 66, 192 = 0 0 0 -127, 0.98 = 63 -17 92 40 -11 -62 -113 92, 8.9f = 65 14 102 102

私の質問:

JVM が int 129 を 0 0 0 -127 に変換する方法、0 0 0 129 と書き込まれないのはなぜですか? 次に、上記の結果のように、JVM が ByteBuffer の Float 型と Double 型をどのように変換するのでしょうか?

事前にどうもありがとうございました。

4

1 に答える 1