オブジェクトを ByteArrayOutputStream に書き込んでいるときに、奇妙な結果が得られます。
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream os = new ObjectOutputStream(baos);
os.writeObject(null);
byte[] objectBytes = baos.toByteArray();
int objectSize = objectBytes.length;
したがって、ByteArrayOutputStream に null を書き込み、0 バイトを見つける代わりにこのストリームからバイトを取得すると、5 であることがわかります。バイトの値は次のとおりです。
- [0] => -84
- [1] => -19
- [2] => 0
- [3] => 5
- [4] => 112
を に変更するos.writeObject(null)
とos.writeObject("A")
、8 バイトになり、これらは -
- [0] => -84
- [1] => -19
- [2] => 0
- [3] => 5
- [4] => 116
- [5] => 0
- [6] => 65
- [7] => 8
ここで何が起こっているのか、0バイトを書き込むと、バイト配列を取得するときにバイトが見つかると予想されます。そして、さらに 5 バイトが追加されていることがわかります。したがって、「A」と書くと、バイト配列で 6 バイトが返されるはずですが、8 が返されます。ここで何が起こっているのでしょうか。