Java: преобразование байтового массива фиксированного размера в строку переменной длины - PullRequest
2 голосов
/ 27 апреля 2011

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

Ответы [ 2 ]

3 голосов
/ 27 апреля 2011

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

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

2 голосов
/ 27 апреля 2011

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

...