![](/img/trans.png)
[英]How to convert CharSequence to UTF-8 encoded byte array in Java?
[英]Convert Byte Array to Charsequence in Android
我使用下面的代碼將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?
任何幫助深表感謝。
將CharSequence
轉換為字節數組
CharSequence seq;
Charset charset;
...
byte[] bytes = seq.toString().getBytes(charset);
要再轉換回來
CharSequence seq2 = new String(bytes, charset);
請記住, CharSequence
是一個由String
, StringBuilder
, StringBuffer
等實現的接口,因此所有String
實例都是CharSequence
實例,但並非所有CharSequence
實例都是String
但CharSequence
的契約是它的toString()
方法應返回等效的String
在Java中,所有字符串都表示為Unicode,因此只要使用者和生產者都是Java,最安全的字符集就是UTF-8
或UTF-16
具體取決於數據的可能編碼大小。 拉丁文字在哪里占主導地位
Charset charset = Charset.forName("UTF-8");
將99.9%的時間用於提供最節省空間的編碼,對於非拉丁字符集(例如中文),您可能會發現UTF-16
空間效率更高,具體取決於您編碼的數據集。 您需要測量顯示它是一種更節省空間的編碼,並且因為UTF-8
更受期待,我建議在任何情況下都使用UTF-8
作為默認編碼。
看起來你正在使用ASCII數據(如果沒有,你的代碼是非常有損的)。
要從ASCII字節獲取CharSequence,您可以這樣做
CharSequence x = new String(theBytes, "US-ASCII");
對於其他編碼,只需指定字符集的名稱即可。
CharSequence c = new String(byte[]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.