Android конвертировать String в байт – взять байт на куски

У меня есть маленький вопрос. Как я могу получить byte array в кусках и сохранить его как String . Я имею в виду, если массив байтов слишком большой, как я могу создать несколько строк из него. В качестве примера, в первый раз я получаю только 50 бит / символов байт, второй раз в следующие 50 и т. Д. Любые идеи?

Используйте String.getBytes() .

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

Во-первых, строка является символьным массивом, символ имеет размер 2 байта.

Во-вторых, String является неизменным объектом, поэтому его невозможно создать с помощью существующего массива, поэтому для его создания будет создана вторая копия массива символов. Если потребление памяти жизненно важно, рассмотрите возможность использования CharSequence вместо String .

Наконец, используйте StringWriter или StringWriter , например:

 String writer = new StringWriter(); writer.write(new String(byteArrayChunk1, "UTF-8")); ... writer.write(new String(byteArrayChunkN, "UTF-8")); String resultString = writer.toString(); 

ОБНОВЛЕНИЕ : Еще один вариант, гораздо лучше, я думаю:

 ByteArrayOutputStream baos = new ByteArrayOutputStream(); baos.write(byteArrayChunk1); baos.write(byteArrayChunkN); String resultString = baos.toString("UTF-8"); 

Преобразуйте массив байтов в строку Base64, а затем разделите его. После этого в фазе слияния слияние этих строк затем преобразует результат в Base64. Или, если у вас есть ограничения памяти, сначала разделите массив байтов на некоторые байтовые массивы

 byte[] origBytes = ...; //a loop for splitting bytes byte[] splittedBytes1 = ...; byte[] splittedBytes2 = ...; ... String strbytes1 = Base64.encodeBytes(splittedBytes1); String strbytes2 = Base64.encodeBytes(splittedBytes2); ...