Java новичок здесь. Существуют ли вспомогательные функции для сериализации данных в и из байтовых массивов? Я пишу пакет Java, который реализует сетевой протокол. Поэтому я должен записать в цикл некоторые типичные переменные, такие как версия (1 байт), порядковый номер (длинный) и двоичные данные (байты). Как мне сделать это на Java? Исходя из C, я думаю о создании байтового массива необходимого размера, а затем, так как нет memcpy (), я конвертирую long во временный байтовый массив и затем копирую его в реальный байтовый массив. Это кажется неэффективным, а также склонным к ошибкам. Есть ли класс, который я мог бы использовать для маршалинга и демаршаллинга параметров в байтовом массиве?
Кроме того, почему все классы Socket работают только с char [], а не byte []? Сокет по определению должен иметь дело и с двоичными данными. Как это делается в Java?
Я уверен, что мне не хватает мышления Java. Цените это, если кто-то может указать это мне.
РЕДАКТИРОВАТЬ: я смотрел на DataOutputStream и DataInputStream, но я не могу преобразовать байты в строку, а не в байт [], что означает, что информация может быть потеряна при преобразовании для записи в сокет.