Java 十六進制表示的Unicode編碼轉換爲字符串算法

要將十六進制表示的Unicode編碼"53C2657095198BEF"轉換爲Unicode字符,需要將其分割成四個編碼,每個編碼爲四個十六進制數字。然後,將每個編碼轉換爲對應的Unicode字符,並將它們合併爲一個字符串。以下是一個Java示例代碼: 

String hexStr = "53C2657095198BEF";
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hexStr.length(); i += 4) {
    // 將每個四位十六進制編碼轉換爲對應的Unicode字符
    char c = (char) Integer.parseInt(hexStr.substring(i, i + 4), 16);
    sb.append(c);
}
String unicodeStr = sb.toString();
System.out.println(unicodeStr);

這將輸出:"參數錯誤",即爲Unicode編碼對應的中文字符串。

如果接收到的16進制Unicode編碼是:C25370651995EF8B 低位在前高位在後 需要 對十六制字符串高低位轉換

/**
 * Java 十六進制表示的 Unicode 編碼轉換爲字符串
 * @param hexString
 * @param reverse 高低位轉換
 * @return
 */
public static String hexToUnicode(String hexString, boolean reverse) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < hexString.length(); i += 4) {
        String hexCode = hexString.substring(i, i + 4);
        if (reverse){
            hexCode = reverseHex(hexCode);
        }
        char c = (char) Integer.parseInt(hexCode, 16);
        sb.append(c);
    }
    return sb.toString();
}
/**
 * java十六進制字符串高低位轉換,如“1A2B”轉“2B1A”。
 *
 * @param hexString
 * @return
 */
public static String reverseHex(String hexString) {
    char[] charArray = hexString.toCharArray();
    int length = charArray.length;
    int times = length / 2;
    for (int c1i = 0; c1i < times; c1i += 2) {
        int c2i = c1i + 1;
        char c1 = charArray[c1i];
        char c2 = charArray[c2i];
        int c3i = length - c1i - 2;
        int c4i = length - c1i - 1;
        charArray[c1i] = charArray[c3i];
        charArray[c2i] = charArray[c4i];
        charArray[c3i] = c1;
        charArray[c4i] = c2;
    }
    return new String(charArray);
}
String hexStr ="C25370651995EF8B0000";
System.out.println(hexToUnicode(hexStr,true));

hexStr ="53C2657095198BEF";
System.out.println(hexToUnicode(hexStr,false));

這將輸出:"參數錯誤",即爲Unicode編碼對應的中文字符串。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章