我想写一个小程序想把16进制转换文中文,但是我一直解决不了怎么把一个整数转化为unicode格式。谁能帮帮我啊。。感激不尽
例如50403准换为unicode的格式应该怎么办
怎样把整型用unicode格式输出
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
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]
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报