java实现十六进制字符unicode与中英文转换示例


在Java中,实现十六进制字符(假设是以字符串形式给出的Unicode编码)与中英文之间的转换,我们通常会使用`Character`类中的方法。以下是一个简单的示例,展示如何将十六进制字符串(Unicode编码)转换为对应的字符(包括中英文),以及如何将字符转换回其十六进制Unicode编码。

### 十六进制Unicode到字符的转换


public class HexUnicodeConverter {

    /**
     * 将十六进制Unicode字符串转换为字符
     * @param hexStr 十六进制Unicode字符串,如"\u4e2d\u6587"或"4e2d6587"(不带\u前缀)
     * @return 对应的字符
     */
    public static String hexUnicodeToStr(String hexStr) {
        // 假设输入的是不带\u前缀的十六进制字符串
        StringBuilder output = new StringBuilder();
        for (int i = 0; i < hexStr.length(); i += 4) {
            String str = hexStr.substring(i, i + 4);
            output.append((char) Integer.parseInt(str, 16));
        }
        return output.toString();
    }

    public static void main(String[] args) {
        String hexStr = "4e2d6587"; // 示例:"中文"的Unicode十六进制编码,不带\u前缀
        String result = hexUnicodeToStr(hexStr);
        System.out.println(result); // 输出: 中文
    }
}

### 字符到十六进制Unicode的转换


    /**
     * 将字符转换为十六进制Unicode编码的字符串
     * @param str 输入的字符串
     * @return 每个字符的十六进制Unicode编码字符串,以空格分隔
     */
    public static String strToHexUnicode(String str) {
        StringBuilder hex = new StringBuilder();
        for (int i = 0; i < str.length(); i++) {
            String hexStr = Integer.toHexString(str.charAt(i)).toUpperCase();
            if (hexStr.length() == 1) hexStr = '0' + hexStr; // 确保每个Unicode编码都是4位
            hex.append("\\u").append(hexStr).append(" ");
        }
        // 移除最后一个空格
        if (hex.length() > 0) hex.deleteCharAt(hex.length() - 1);
        return hex.toString();
    }

    // 在main方法中添加测试
    public static void main(String[] args) {
        String testStr = "中文";
        String hexUnicode = strToHexUnicode(testStr);
        System.out.println(hexUnicode); // 输出: \u4E2D\u6587
    }

这两个方法分别展示了如何将十六进制字符串(Unicode编码)转换为字符,以及如何将字符转换回其十六进制Unicode编码的字符串。注意,`hexUnicodeToStr`方法假设输入的十六进制字符串是连续的,且不带`\u`前缀;而`strToHexUnicode`方法将每个字符转换为带有`\u`前缀的四位十六进制字符串,并用空格分隔(这里仅作为示例,实际使用时可能需要根据具体需求调整分隔符或格式)。