0

バイト配列を文字列に変換することは可能ですが、文字列の長さは配列内のバイト数とまったく同じ長さですか? 以下を使用する場合:

byte[] data; // Fill it with data
data.toString();

文字列の長さが配列の長さと異なります。これは、Java や Android が何らかのデフォルトのエンコーディングを考慮に入れているためだと思います。配列内の値は、負の値にすることもできます。理論的には、任意のバイトを何らかの文字に変換できるはずです。各文字に固定の 1 バイト幅を生成するエンコーディングを指定する方法を理解する必要があると思います。

編集:

次のことを試しましたが、うまくいきませんでした:

byte[] textArray; // Fill this with some text.
String textString = new String(textArray, "ASCII"); 
textArray = textString.getBytes("ASCII"); // textArray ends up with different data.
4

3 に答える 3

1

Stringコンストラクターを使用String(byte[] data)して、バイト配列から文字列を作成できます。String(byte[] data, Charset charset)文字セットも指定する場合は、コンストラクターを使用できます。

于 2013-02-05T14:43:46.807 に答える
0

US-ASCIIまたはISO-8859-1の代わりにコード サンプルを試してくださいASCII。ASCII は、Java または Android の組み込みの文字エンコーディングではありませんが、これら 2 つのうちの 1 つです。これらは、文字セットに含まれない文字は暗黙のうちに切り捨てられるという警告とともに、シングルバイト エンコーディングが保証されます。

于 2013-02-06T00:43:11.063 に答える