Java: Преобразование массива байт фиксированного размера в строку переменной длины

#java #string #bytearray

#java #строка #массивы

Вопрос:

Есть ли способ преобразовать массив байтов фиксированного размера в строку без перебора массива байтов, чтобы найти, где заканчивается строка? Проблема, с которой я сталкиваюсь, заключается в том, что не все байты в массиве байтов являются символами. Я дополняю конец массива 0 . Если я использую new String(byte[]) , он интерпретирует 0 s как часть строки. Есть ли определенный символ, которым я могу дополнить byte[] и не интерпретировать его как часть строки?

Комментарии:

1. Чего именно вы пытаетесь достичь?

2. Я сохраняю строки на диске в области фиксированного размера (128 байт), затем пытаюсь прочитать строку обратно с диска.

Ответ №1:

Нет, поскольку все байтовые значения являются допустимыми символами в строке. Вы должны отслеживать количество допустимых байтов и использовать byte[], int, int версию конструктора.

Если вы не хотите отслеживать количество вручную (возможно, потому, что вы создаете массив байтов по частям), рассмотрите возможность использования ByteArrayOutputStream .

Ответ №2:

Существует строковый конструктор, который принимает byte[] , начальное смещение и длину в качестве аргументов — просто используйте это, чтобы указать строке, какие байты включать.