Android--字符串和16進制相互轉化(解決中文亂碼)


import java.io.ByteArrayOutputStream;

/**
 * Created by Administrator on 2016/2/2.
 * -----------16進制和字符串互轉---------
 * ------------解決中文亂碼問題---------
 */
public class StringToSixthUtils {

    private static String hexString = "0123456789abcdef";

    /*
     * 將字符串編碼成16進制數字,適用於所有字符(包括中文)
     */
    public static String encode(String str) {
        //根據默認編碼獲取字節數組
        byte[] bytes = str.getBytes();
        StringBuilder sb = new StringBuilder(bytes.length * 2);
        //將字節數組中每個字節拆解成2位16進制整數
        for (int i = 0; i < bytes.length; i++) {
            sb.append(hexString.charAt((bytes[i] & 0xf0) >> 4));
            sb.append(hexString.charAt((bytes[i] & 0x0f)));
        }
        return sb.toString();
    }

    /*
     * 將16進制數字解碼成字符串,適用於所有字符(包括中文)
     */
    public static String decode(String bytes) {
        ByteArrayOutputStream baos = new ByteArrayOutputStream(bytes.length() / 2);
        //將每2位16進制整數組裝成一個字節
        for (int i = 0; i < bytes.length(); i += 2)
            baos.write((hexString.indexOf(bytes.charAt(i)) << 4 | hexString.indexOf(bytes.charAt(i + 1))));
        return new String(baos.toByteArray());
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM