码迷,mamicode.com
首页 > 编程语言 > 详细

C语言中两位ASCLL码可以表示汉字

时间:2014-06-02 06:35:56      阅读:734      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

最近偶然有人问到这个相关字符编码的问题,所以百度了下参考了这两个资料,进行了简单分析。

 

**********************************************************************

参考资料一:http://zhidao.baidu.com/link?url=YDoT2OLdKEElDQ86Ce_wEtKt9Nrn2yJ8TIb9JkasvaLvi8D66RRwSvxn2DkFRVM_OOnq4fCoJPA-19AmpPeypa

“206 210 176 174 214 236 187 219 ” 是 ASCLL码 , 编辑成中文是什么 ???

提问者采纳:


非常无语啊。。。我们是很有敬业精神的。。意为"我爱朱慧"

 

 

 

********************************************************

现在开始分析:

资料一说:

“206 210 176 174 214 236 187 219 ” 是 ASCLL码 , 编辑成中文是“我爱朱慧”。

写成代码:

bubuko.com,布布扣
#include<stdio.h>
int main(void)
{
    printf("%c%c%c%c%c%c%c%c",206,210,176,174,214,236,187,219);
    printf("\n");
    return 0;
}
bubuko.com,布布扣

运行结果:

bubuko.com,布布扣

看到这里,好像明白了。

汉字是双字节,且两个数字可以 编码一个汉字。

总结下就是:

206+210=我

176+174=爱

214+236=朱

187+219=慧

呵呵,到这里就没必要再深究啦。

可是,突发奇想,想找到用哪两个数字可以组合出“你”字?

想搞出“我爱你”编码!嘿嘿。

于是,我进行了大量测试。没办法,不是很懂这个,只好用循环来做啦。

编写代码如下。

测试发现129到247有编码汉字,其余范围无法编码成汉字。

测试代码一:

 

bubuko.com,布布扣
#include<stdio.h>
int main(void)
{
    int i;
    for(i=129;i<=247;i++)
    printf("%d+%d=%c%c\t",i,i,i,i);
    printf("\n");
    return 0;
}
bubuko.com,布布扣

 

运行结果:

bubuko.com,布布扣

测试代码二:

bubuko.com,布布扣
#include<stdio.h>
int main(void)
{
    int i;
    for(i=129;i<=247;i++)
    printf("%d+%d=%c%c\t",i,i+1,i,i+1);
    printf("\n");
    return 0;
}
bubuko.com,布布扣

运行结果:

bubuko.com,布布扣

测试代码三:

bubuko.com,布布扣
#include<stdio.h>
int main(void)
{
    int i;
    for(i=129;i<=247;i++)
    printf("%d+%d=%c%c\t",i,i+2,i,i+2);
    printf("\n");
    return 0;
}
bubuko.com,布布扣

bubuko.com,布布扣

......

以此类推,测试了几组代码后总结如下:

206+210=我
176+174=爱
184+184=父
208+208=行
193+193=亮
183+183=贩
198+198=破
131+131=傻
188+188=技
177+177=北
180+180=创
181+181=档
182+182=抖
185+185=构
186+186=汉
187+187=换
191+191=靠
196+196=哪
195+195=妹
202+202=适
197+197=排
200+200=热
214+214=种
199+199=乔
213+213=照
199+199=乔
204+204=烫
192+192=览
180+181=吹
181+182=刀
176+177=氨
204+205=掏
206+207=蜗
192+193=懒
187+188=患
182+183=斗
185+186=购
190+191=究
191+192=坷
197+198=牌
180+181=吹
183+184=犯
193+194=谅
194+195=旅
198+199=魄
199+200=侨
203+204=颂
206+207=蜗
207+208=闲
208+209=醒
209+210=岩
176+178=安
177+179=背
178+180=泊
179+181=车
180+182=炊
183+185=饭
184+186=负
185+187=够
186+188=杭
187+189=唤
188+190=季
190+192=纠
195+197=门
198+200=迫
199+201=巧
200+202=仁
201+203=伤
203+205=送
204+206=涛
205+207=拖
208+210=幸
210+212=以
211+213=诱
212+214=灾
213+215=兆
214+216=重
215+217=踪
176+179=俺
177+180=贝
178+181=驳
181+184=蹈
182+185=豆
183+186=泛
184+187=富
185+188=辜
186+189=航
193+196=聊
194+197=屡
195+198=闷
196+199=那
200+203=人
201+204=商
202+205=释
203+206=宋
209+212=言
210+213=艺
211+214=又
212+215=宰
217+220=余
176+180=按
178+182=捕
179+183=撤
181+185=倒
182+186=逗
188+192=祭
195+199=们
197+201=派
200+204=忍
201+205=赏
202+206=饰
212+216=载
213+217=召
214+218=众
177+182=倍
181+186=岛
183+188=芳
214+219=舟
215+220=总
212+217=再
210+215=易
208+213=姓
207+212=显
190+185=久
176+182=岸
180+186=春
182+188=都
183+189=方
200+206=任
201+207=上

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

找了半天都没找到“你”,汗,真的累了。

又百度,看看有没有好的其他便捷的方法。

搜索了半天,终于找到了资料二。

 *****************************************************************************

参考资料二:http://zhidao.baidu.com/link?url=TyO1WecgunJH_ZOeeSqX1o8O8QPxga2B7JsMrQRzWajNs7O8Nh-g-Yr3B-zzAV1vO_vDqcn6qNDVqj8DwHDH2q

 

题目:

C语言中两位ASCLL码可以表示汉字(如202,214表示手)请问两位ASCLL怎么与GB2312中的区位码相对应

“啊”是国标码中的第一个是1601,用ASCLL码怎么表示它

 


答案:

 

bubuko.com,布布扣
#include<stdio.h>int main(void)
{
char s[]="啊";//汉字在C/C++中是用2个字节表示的,而对应的ASCII码则是两个负数。 char m[3]; printf("%d %d\n",s[0],s[1]); /*注释 s[0]=-80,s[1]=-95 注释*/ m[0]=-80; m[1]=-95; m[2]=0; puts(m);//两个字节连起来凑成一个汉字。 }
bubuko.com,布布扣

 

运行结果:

 

bubuko.com,布布扣

 

 *********************************************************************************************************

于是,我模仿资料二,找出汉字”你“的编码。

编写下列代码:

bubuko.com,布布扣
#include<stdio.h>
int main(void)
{
    char s[]="你";//汉字在C/C++中是用2个字节表示的,而对应的ASCII码则是两个负数。
    char m[3];
    printf("%d %d\n",s[0],s[1]);
    m[0]=-60;
    m[1]=-29;
    m[2]=0;
    puts(m);//两个字节连起来凑成一个汉字。
    return 0;
}
bubuko.com,布布扣

运行结果:

bubuko.com,布布扣

再修改代码:

bubuko.com,布布扣
#include<stdio.h>
int main(void)
{
    char s[]="你";//汉字在C/C++中是用2个字节表示的,而对应的ASCII码则是两个负数。
    char m[3];
    printf("%c%c\n",s[0],s[1]);
    m[0]=-60;
    m[1]=-29;
    m[2]=0;
    puts(m);//两个字节连起来凑成一个汉字。
    return 0;
}
bubuko.com,布布扣

运行结果:

bubuko.com,布布扣

好了,大功告成了!哈哈,终于搞出来了。

最终完善代码:

bubuko.com,布布扣
#include<stdio.h>
int main()
{
 int i;
 printf("%c%c%c%c%c%c\n",206,210,176,174,-60,-29);
 return 0;
}
bubuko.com,布布扣

运行结果:

bubuko.com,布布扣

 

哈哈,好了,打完收工。准备睡觉。

 

 

 

C语言中两位ASCLL码可以表示汉字,布布扣,bubuko.com

C语言中两位ASCLL码可以表示汉字

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/xingyunblog/p/3764002.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!