Android将String转换为byte [] - 将片段[]转换为片段

时间:2011-10-18 09:04:51

标签: android string bytearray

我有一个小问题。如何将byte array分段并保存为String。我的意思是如果y字节数组太大,我怎么能从它创建几个字符串。举个例子,我第一次只得到50位/字节的字节,第二次得到下一个50等等。任何想法?

3 个答案:

答案 0 :(得分:6)

使用String.getBytes()方法。

答案 1 :(得分:1)

如果必须创建一个字符串,则需要比所有字节大小多几倍的内存。

首先,string是一个字符数组,字符大小为2个字节。

其次,String是一个不可变对象,因此不可能使用现有数组创建它,因此要构造它,将创建字符数组的第二个副本。如果内存消耗至关重要,请考虑使用CharSequence代替String

最后,使用StringBuilderStringWriter,例如:

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");

答案 2 :(得分:0)

将您的字节数组转换为Base64字符串,然后将其拆分。之后在合并阶段合并该字符串然后将结果转换为Base64。 或者,如果您有内存限制,首先将字节数组拆分为某些字节数组

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