6

以下のコードを使用して、Charsequence をバイト配列に変換しました。次に、バイト配列を Blob として Sqlite データベースに保存します。

このために、以下のコードを使用しました。

 public static byte[] toByteArray(CharSequence charSequence) {
        if (charSequence == null) {
          return null;
        }
        byte[] barr = new byte[charSequence.length()];
        for (int i = 0; i < barr.length; i++) {
          barr[i] = (byte) charSequence.charAt(i);
        }

        return barr;
      }

ここで、sqlite から取得したバイト配列を Charsequence に変換したいと思います。しかし、私はそれについて何の助けも得ることができませんでした。

バイト配列を文字列に変換するには?

どんな助けでも大歓迎です。

4

3 に答える 3

20

CharSequencea をバイト配列に変換するには

CharSequence seq;
Charset charset;
...
byte[] bytes = seq.toString().getBytes(charset);

再度変換するには

CharSequence seq2 = new String(bytes, charset);

、、などCharSequenceによって実装されるインターフェイスであることを覚えておいてください。したがって、すべてのインスタンスはインスタンスですが、すべてのインスタンスがそうであるわけではありませんが、そのメソッドは同等のものを返す必要があるという契約がありますStringStringBuilderStringBufferStringCharSequenceCharSequenceStringCharSequencetoString()String

内部的には、Java のすべての文字列は Unicode として表現されるため、コンシューマーとプロデューサーの両方が Java である限り、使用する最も安全な文字セットは、データのエンコーディング サイズのUTF-8いずれかまたはそれUTF-16に依存します。ラテン文字が優勢なところでは、

Charset charset = Charset.forName("UTF-8"); 

非ラテン文字セット (中国語など) の場合UTF-16、エンコードするデータ セットによっては、よりスペース効率の良いエンコーディングが得られる可能性があります。それがよりスペース効率の高いエンコーディングであることを示す測定値が必要であり、UTF-8より広く予想されているようUTF-8に、いずれにしてもデフォルトのエンコーディングとしてお勧めします。

于 2012-08-21T09:44:35.523 に答える
8

ASCIIデータを使用しているようです(そうでない場合、コードはかなり損失があります)。

ASCIIバイトからCharSequenceを取得するには、次のようにします。

CharSequence x = new String(theBytes, "US-ASCII");

他のエンコーディングの場合は、文字セットの名前を指定するだけです。

于 2012-08-21T09:39:45.273 に答える
1
CharSequence c = new String(byte[]);
于 2012-08-21T09:39:27.097 に答える