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编码对应的中文字符串。

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