我使用下面的代码将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?
非常感谢任何帮助。
答案 0 :(得分:16)
将CharSequence
转换为字节数组
CharSequence seq;
Charset charset;
...
byte[] bytes = seq.toString().getBytes(charset);
再转换回来
CharSequence seq2 = new String(bytes, charset);
请记住,CharSequence
是由String
,StringBuilder
,StringBuffer
等实施的界面,因此所有String
个实例都是{{1}实例但不是所有CharSequence
个实例都是CharSequence
,但String
的合同是CharSequence
方法应返回等效的toString()
Java内部的所有字符串都表示为Unicode,因此只要使用者和生产者都是Java,最安全的字符集就是String
或UTF-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[]);