iteye_2561 2009-04-04 20:30
浏览 239
已采纳

怎样把整型用unicode格式输出

我想写一个小程序想把16进制转换文中文,但是我一直解决不了怎么把一个整数转化为unicode格式。谁能帮帮我啊。。感激不尽
例如50403准换为unicode的格式应该怎么办

  • 写回答

2条回答 默认 最新

  • rednaxelafx 2009-04-05 01:28
    关注

    对单个Unicode codepoint要转换为Java可用的UTF-16字符序列,用Character.toChars(int)。要进一步转换为别的编码的话,用CharsetEncoder就行;或者用String.getBytes也行,但它的内部实际上也用了CharsetEncoder来做转换。

    [code="java"]import java.nio.*;
    import java.nio.charset.*;

    public class Test {
    public static void main(String[] args) throws Exception {
    StringBuilder sb = new StringBuilder();
    sb.appendCodePoint(0x4f60);
    String result = sb.toString();
    System.out.println(result); // 你
    byte[] gbkBytes = result.getBytes("GBK");
    System.out.printf("%x%x\n", gbkBytes[0], gbkBytes[1]); // c4e3

        ////////////////////////////////////////////
    
        char[] ca = Character.toChars(0x4f60); // unicode codepoint -> UTF-16 array
        CharsetEncoder gbkEncoder = Charset.forName("GBK").newEncoder();
        CharBuffer cbuf = CharBuffer.wrap(ca);
        ByteBuffer bbuf = gbkEncoder.encode(cbuf);
        byte[] gbkBytes2 = bbuf.array();
        System.out.printf("%x%x\n", gbkBytes2[0], gbkBytes2[1]); // c4e3
    
        int gbkCode2 = bbuf.asShortBuffer().get() & 0x0FFFF;
        System.out.printf("%x\n", gbkCode2); // c4e3
    }
    

    }[/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?