求教,汉字与ascii码之间的相互转换,急!!

ghaiyang 2003-08-11 02:05:48
给定一个字符串,可能包含汉字,如何判定其中的任意一个字符是否是汉字,
如果是,如何实现汉字与ascii码之间的相互转换
...全文
945 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzsxqzzsxq3000 2003-08-11
  • 打赏
  • 举报
回复
不知道楼主是用来干什么用的,如果单纯判断是否汉字倒有很多方法,至于汉字和ascii转换我感觉不能吧,因为汉字是两个字节的。下面写了一段,不知道能否帮的上楼主。
#include <stdio.h>
#include <string.h>
void main()
{
char str[30] = "lkj喊oiul";
int strLen,i;
char ch;
strLen = strlen(str);
for(i=0;i<strLen;i++)
{
ch = str[i];
if(ch & 0x80)
printf("%c",ch);
}
}
  • 打赏
  • 举报
回复
得到汉字区位码(GBK内码)的方法:

#include <wchar.h>
#include <wctype.h>

……………………

wchar_t c = '汉';
unsigned int i = c;
luckysky 2003-08-11
  • 打赏
  • 举报
回复
为汉字还是为ASC码是判断当前字节的最高位是1还是0,如果要是进行这样的简单转换的化,只要把最高位进行相对应设置一下就可以了。不过根据楼主的意思好像不是这么样的,汉字是2个字节而ASC码为1个字节,所以不好进行转换的。
lth_81 2003-08-11
  • 打赏
  • 举报
回复
啊,才一会儿没来就这么多人了啊。刚才在网上看到的资料表示,你的问题无解。
汉字不能转换为ascii。

汉字有两个部分组成,前半部分的为区内码,后半部分未位内码。区内码=160+区码,为内码=160+位码,因此可以通过这个方法获得汉字的区位码。通过区位码,可以获得字模,来修改汉字的字体吧。

^_^
lengnuan 2003-08-11
  • 打赏
  • 举报
回复
参考这个吧:

http://www.china-askpro.com/msg38/qa05.shtml
cdocument 2003-08-11
  • 打赏
  • 举报
回复
如果都是可见字符的话,这个问题是可以解决的。
因为可见字符的范围是0-127,而汉字是由连续两个大于127的数字构成(也就是其高八位和低八位的数值范围)。
AceHuang 2003-08-11
  • 打赏
  • 举报
回复
你的汉字应该有范围吧,如果是GB2312的,你可以看看它的编码规则,然后进行判断,楼上的老兄已经说的很明白了,一般来说,汉字的第一个字节是大于128的。
fwinfwin 2003-08-11
  • 打赏
  • 举报
回复
汉字可以使用ascii码
一般汉字由两个ascii码组成,而且两个字节都是1*******,就是为128~256的字符,
如果在有汉字支持的环境可以正常输出,不然就显示为128-256的扩展ascii字符.
一般带汉字的字符串,如果有两个紧临大于128的ascii码,那么应该是一个汉字.
cdocument 2003-08-11
  • 打赏
  • 举报
回复
首先要说,汉字不能转换为ascii码。原因不是因为ascii有限,而是因为ascii码是一个字节表示,范围是0-255。而汉字至少需要两个字节来表示。
一般情况下汉字和一个数字来对应(用数据库),也就是常说的码表。比如我用数字“123456”表示了汉字“来”,你可以用win98下面的输入法生成器来反编译任一输入法的码表文件,也就是*.mb文件,你可以看看其关系。
再来说说你的问题:个人觉得比较难,比如以下字符串“sdfrf123汉yeit394”,出了那个汉字以外其他的字符都是用一个字节来表示的。而汉是用两个字节来表示,判断两个字节还是一个字节将会是一个无法逾越的障碍。
swimmer2000 2003-08-11
  • 打赏
  • 举报
回复
应该是一个汉字不能转换成ascii码,因为ascii码很有限,没办法表示汉字,应该用16位编码。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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