簡體   English   中英

在Android中將字節數組轉換為Charsequence

[英]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是一個由StringStringBuilderStringBuffer等實現的接口,因此所有String實例都是CharSequence實例,但並非所有CharSequence實例都是StringCharSequence的契約是它的toString()方法應返回等效的String

在Java中,所有字符串都表示為Unicode,因此只要使用者和生產者都是Java,最安全的字符集就是UTF-8UTF-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM