У меня есть массив байтов фиксированной длины, и я хочу сохранить в нем String. Что-то вроде:Как сохранить и прочитать строку из массива байтов фиксированной длины?
byte[] dst = new byte[512];
String foo = "foo";
byte[] src = foo.getBytes("utf-8");
for (int i = 0; i < src.length; i++) {
dst[i] = src[i];
}
Но когда я хочу прочитать значение строки обратно из целевой_адреса, нет никакого способа узнать, где строка заканчивается (предполагает, что нет никакого понятия нулевых терминаторов в Java?). Должен ли я хранить длину строки в массиве байтов, прочитывать ее отдельно, чтобы узнать, сколько байтов следует читать из массива байтов?
Почему вы копируете с 'src' на' dst' вообще, а не используете 'src'? –
Да, вы должны сохранить длину строки, которую вы набиваете в dst, иначе как вы узнаете, сколько байтов вытягивать снова при восстановлении String из вашего массива dst byte. – anubhava
'new String (dst, 0, src.length," UTF-8 ")' и вы можете использовать 'DataOutputStream.writeUTF8 (String)' без байтов. –