请教:汉字的16进制表示
char ch[] = "中国"
for(int j = 0;j < 5;j++)
printf("%d%c%02X%c\n",0,'X',ch[j],',');
输出:0xffffffd6,
0xffffffd0,
0xffffffb9,
0xfffffffa,
0x00,
我想问的是:1.为什么会输出这个?
2.汉字的两个字节可不可以分开?
3.是不是有其它的方法?
请赐教!!
问题点数:50、回复次数:10Top
1 楼junguo(junguo)回复于 2005-07-06 16:19:36 得分 10
你按字节输出,输出的就是ascii码了!
两个字节是不能分开的,不然表示的意思就不一样了!
其实汉字的编码中,重要的是编译器如何解释这些字符。Top
2 楼z19820201(waysun)回复于 2005-07-06 16:25:04 得分 0
因为不是很懂,所以还是不说了,以免误导。Top
3 楼jp1981113(傲笑剑客)回复于 2005-07-06 16:26:38 得分 0
那应该怎么输出啊?请指教!
Top
4 楼5420(薰衣草)回复于 2005-07-06 16:31:30 得分 0
关注!!!Top
5 楼6spring(6Spring)回复于 2005-07-06 16:43:19 得分 30
wchar_t a[]=L"中国";
for(size_t j = 0;j < wcslen(a);j++)
printf("0x%04x\n",a[j]);
Top
6 楼tfq(大梦谁先觉)回复于 2005-07-06 16:45:43 得分 0
printf("%s",ch)不行?Top
7 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-07-06 16:52:05 得分 10
你这里输出的是unicode,其实就是其字符的16进制数
2个字节分别是高位和低位,和起来才是一个汉字。Top
8 楼jp1981113(傲笑剑客)回复于 2005-07-06 17:05:43 得分 0
感谢各位的答复。谢谢!
特别是6spring(6Spring) ,高手啊!谢谢!!
Top
9 楼windwing2003(windwing2003)回复于 2005-07-07 00:33:00 得分 0
jp1981113 (傲笑剑客) ,你好,你的问题解决了么?最后用的6spring(6Spring)的方法,是vc 6++下编译的么?Top
10 楼jp1981113(傲笑剑客)回复于 2005-07-07 11:56:44 得分 0
是他的方法。
单独编译是解决了,不过在一个工程中又出了点问题,我正在调试Top




