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

duxiu 2007-02-12 03:38:28
如何把汉字的ascii码值,转换成汉字

如:46763 => 东

如果ascii码小于等于255即8位存储的话, printf("%c",97); => a
但汉字是16位存储的,转换不了!!
高手们,有何办法??
...全文
1198 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
problc 2010-05-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lhcwjy 的回复:]
int ascii=46763;
char *p=(char *)&ascii;
printf("%c%c\n",*(p+1),*p);
[/Quote]
这方法不错
白云飘飘飘 2010-05-17
  • 打赏
  • 举报
回复
int ascii=46763;
char *p=(char *)&ascii;
printf("%c%c\n",*(p+1),*p);
junjunang 2010-05-17
  • 打赏
  • 举报
回复
请教一个简单问题
如何在C语言中 printf 所有汉字?
hu_vane 2007-02-12
  • 打赏
  • 举报
回复
看了楼上的,想说一下,46763并不能叫做“东”的ASSIC码值,它是映射到CodePage的。46763是“东”在GB2312编码中的值。
htqx 2007-02-12
  • 打赏
  • 举报
回复
wchar_t 是宽字符的.
或者输出字符串.

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

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

hu_vane 2007-02-12
  • 打赏
  • 举报
回复
忘了说一下,
写成word[1] = (code / 0x100) & 0xFF;是为了说明意思,其实用word[1] = code >> 8;就行了。
hu_vane 2007-02-12
  • 打赏
  • 举报
回复
其实,如果考虑与平台无关,直接赋值才是正道。
unsigned short code = 43958;
char word[4] = "\0";
word[0] = code & 0xFF;
word[1] = (code / 0x100) & 0xFF;

//std::cout<<word<<std::endl;
hu_vane 2007-02-12
  • 打赏
  • 举报
回复
楼上的思路是对的,但操作起来有问题。
x的地址后面并不紧随0的,直接用printf会在“东”后面跟一串乱码。
还是用int吧,在使用的时候可以强制一下。
unsigned int x = 43958;
printf("%s", reinterpret_cast<unsigned short*>(&x));
taodm 2007-02-12
  • 打赏
  • 举报
回复
unsigned short x = 43958;

printf("%s", &x);
duxiu 2007-02-12
  • 打赏
  • 举报
回复
我是想输出到文件中的,不用中文平台
xiaolh 2007-02-12
  • 打赏
  • 举报
回复
可以用中文平台,printf("%s","汉字");
或者根据点阵绘图

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧