您的位置:程序门 -> c/c++ -> c++ 语言



如何把汉字的ascii码值,转换成汉字


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


如何把汉字的ascii码值,转换成汉字
发表于:2007-02-12 15:38:28 楼主
如何把汉字的ascii码值,转换成汉字

如:46763     =>   东

如果ascii码小于等于255即8位存储的话,   printf( "%c ",97);   =>   a
但汉字是16位存储的,转换不了!!
    高手们,有何办法??
发表于:2007-02-12 15:50:041楼 得分:0
可以用中文平台,printf( "%s ", "汉字 ");
或者根据点阵绘图
发表于:2007-02-12 15:55:092楼 得分:0
我是想输出到文件中的,不用中文平台
发表于:2007-02-12 16:02:093楼 得分:0
unsigned   short   x   =   43958;

        printf( "%s ",   &x);
发表于:2007-02-12 16:10:064楼 得分:0
楼上的思路是对的,但操作起来有问题。
x的地址后面并不紧随0的,直接用printf会在“东”后面跟一串乱码。
还是用int吧,在使用的时候可以强制一下。
unsigned   int   x   =   43958;
printf( "%s ",   reinterpret_cast <unsigned   short*> (&x));
发表于:2007-02-12 16:15:385楼 得分:0
其实,如果考虑与平台无关,直接赋值才是正道。
unsigned   short   code   =   43958;
char   word[4]   =   "\0 ";
word[0]   =   code   &   0xff;
word[1]   =   (code   /   0x100)   &   0xff;

//std::cout < <word < <std::endl;
发表于:2007-02-12 16:40:426楼 得分:0
忘了说一下,
写成word[1]   =   (code   /   0x100)   &   0xff;是为了说明意思,其实用word[1]   =   code   > >   8;就行了。
发表于:2007-02-12 17:06:217楼 得分:0
wchar_t   是宽字符的.
或者输出字符串.

wchar_t   c   =   '东 ';
wprintf( "%c ",   c   );

char   *str   =   "东 ";
printf( "%s ",   str   );

发表于:2007-02-12 17:25:118楼 得分:0
看了楼上的,想说一下,46763并不能叫做“东”的assic码值,它是映射到codepage的。46763是“东”在gb2312编码中的值。


快速检索

最新资讯
热门点击