2011-10-18 10 views
3

少し質問があります。 byte arrayをどうすればいいですか?Stringという名前で保存してください。私はyバイト配列が大きすぎる場合、どうすればそれからいくつかの文字列を作成できますか?一例として、私は最初にバイトの50ビット/文字だけを取得し、次の50バイトなどはどのようなアイデアですか?Androidの文字列をバイトに変換する[] - バイトをバイト[]で返す

答えて

6

String.getBytes()メソッドを使用してください。

+0

しかし、私が何をすべきかの私のバイト[ ]私はそれから文字列を作成しようとしているときに私にoutofmemory例外をスローされていますか? –

+0

@Bombastic Use String.substring(beginIndex、endIndex).getBytes() – adatapost

+0

実際には、文字列の特定の部分をbyte []に​​変換するためのものだと思います。私はそれの反対が必要です。 bye []の最初の200文字を取得し、文字列としてコンサートします。 –

0

バイト配列をBase64文字列に変換してから分割します。その後、マージフェーズでその文字列をマージし、結果をBase64に変換します。 それとも、メモリの制限がある場合は、最初にバイト配列を使用して文字列を作成する必要がある場合、あなたはすべてのバイトのサイズより数倍多くのメモリを必要とするいくつかのバイト配列

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

'Base64.encodeBytes(String)'メソッドは表示されません。何か不足していますか? –

1

に分割します。

文字列は文字配列で、文字のサイズは2バイトです。

第2に、Stringは不変オブジェクトであるため、既存の配列を使用して文字列を作成することは不可能です。したがって、文字配列の2番目のコピーが作成されます。メモリ消費が重要な場合は、Stringの代わりにCharSequenceを使用することを検討してください。

最後に、例えば、StringBuilderまたはStringWriterを使用します。

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

UPDATE: 別のオプション、はるかに良く、私は思う:

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
baos.write(byteArrayChunk1); 
baos.write(byteArrayChunkN); 
String resultString = baos.toString("UTF-8"); 
関連する問題