java:UTF-32到UTF-16转换器

java:UTF-32到UTF-16转换器,java,utf-8,utf-32,Java,Utf 8,Utf 32,我正在尝试获取java转义码。 示例:1F612==>\ud83d\ude12 我试过: String toConvert = "\ud83d\ude12"; String result = ""; for(int x=0;x<toConvert.length();x++){ int codePoint = Character.codePointAt(toConvert, x); String hexStr = Integer.toHexString(codePoint);

我正在尝试获取java转义码。
示例
1F612
==>
\ud83d\ude12

我试过:

String toConvert = "\ud83d\ude12";
String result = "";
for(int x=0;x<toConvert.length();x++){
    int codePoint = Character.codePointAt(toConvert, x);
    String hexStr = Integer.toHexString(codePoint);
    hexStr = formatUTF(hexStr);
    result += hexStr;
}
System.out.println(result);
注意
1F612
Hex=
128530
Integer


请帮忙。

也许这就澄清了一切

    for (int i = 0; i < toConvert.length(); ) {
        int codePoint = Character.codePointAt(toConvert, i);
        i += Character.charCount(codePoint);
        System.out.printf("[%d] cp: %x%n", i, codePoint);
    }
    for (int i = 0; i < toConvert.length(); ++i) {
        char ch = toConvert.charAt(i);
        System.out.printf("[%d] c: %x%n", i, (int)ch);
    }

完全如上面所说。

thanx。这就是我要找的。因此,我使用了错误的函数:P
run:
\u1f612\ude12
    for (int i = 0; i < toConvert.length(); ) {
        int codePoint = Character.codePointAt(toConvert, i);
        i += Character.charCount(codePoint);
        System.out.printf("[%d] cp: %x%n", i, codePoint);
    }
    for (int i = 0; i < toConvert.length(); ++i) {
        char ch = toConvert.charAt(i);
        System.out.printf("[%d] c: %x%n", i, (int)ch);
    }
    [2] cp: 1f612
    [0] c: d83d
    [1] c: de12