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 型をどのように変換するのでしょうか?
事前にどうもありがとうございました。