Я получаю странные результаты при записи объектов в ByteArrayOutputStream.
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream os = new ObjectOutputStream(baos);
os.writeObject(null);
byte[] objectBytes = baos.toByteArray();
int objectSize = objectBytes.length;
Итак, я пишу ноль в ByteArrayOutputStream, затем, когда я извлекаю байты из этого потока вместо того, чтобы находить 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. Что здесь происходит?