#java #string #bytearray
#java #строка #массивы
Вопрос:
Есть ли способ преобразовать массив байтов фиксированного размера в строку без перебора массива байтов, чтобы найти, где заканчивается строка? Проблема, с которой я сталкиваюсь, заключается в том, что не все байты в массиве байтов являются символами. Я дополняю конец массива 0
. Если я использую new String(byte[])
, он интерпретирует 0
s как часть строки. Есть ли определенный символ, которым я могу дополнить byte[] и не интерпретировать его как часть строки?
Комментарии:
1. Чего именно вы пытаетесь достичь?
2. Я сохраняю строки на диске в области фиксированного размера (128 байт), затем пытаюсь прочитать строку обратно с диска.
Ответ №1:
Нет, поскольку все байтовые значения являются допустимыми символами в строке. Вы должны отслеживать количество допустимых байтов и использовать byte[], int, int
версию конструктора.
Если вы не хотите отслеживать количество вручную (возможно, потому, что вы создаете массив байтов по частям), рассмотрите возможность использования ByteArrayOutputStream
.
Ответ №2:
Существует строковый конструктор, который принимает byte[]
, начальное смещение и длину в качестве аргументов — просто используйте это, чтобы указать строке, какие байты включать.