在Android中将字节数组转换为Charsequence

时间:2012-08-21 09:36:38

标签: java android type-conversion charsequence

我使用下面的代码将Charsequence转换为Byte Array。然后我将字节数组保存为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。但我无法得到任何帮助。

如何将字节数组转换为Charsequence?

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:16)

CharSequence转换为字节数组

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

再转换回来

CharSequence seq2 = new String(bytes, charset);

请记住,CharSequence是由StringStringBuilderStringBuffer等实施的界面,因此所有String个实例都是{{1}实例但不是所有CharSequence个实例都是CharSequence,但String的合同是CharSequence方法应返回等效的toString()

Java内部的所有字符串都表示为Unicode,因此只要使用者和生产者都是Java,最安全的字符集就是StringUTF-8之一,具体取决于可能的编码大小。你的数据。拉丁文脚本占主导地位,

UTF-16

99.9%的时间会提供最节省空间的编码,对于非拉丁字符集(例如中文),您可能会发现Charset charset = Charset.forName("UTF-8"); 空间效率更高,具体取决于您编码的数据集。您需要测量结果显示它是一种空间效率更高的编码,并且UTF-16更广泛地被期望我建议UTF-8作为默认编码。

答案 1 :(得分:8)

看起来您正在使用ASCII数据(如果没有,您的代码非常有用)。

要从ASCII字节获取CharSequence,您可以执行

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

对于其他编码,只需指定字符集的名称。

答案 2 :(得分:1)

CharSequence c = new String(byte[]);