0-127 是 7位ASCII 码的范围,是国际标准。
至于汉字,不同的字符集用的ascii 码的范围也不一样,常用的汉字字符集有GB2312-80、GBK、Big5、unicode 等。
其中GB_2312 字符集是目前最常用的汉字编码标准,windows 95/98/2000 中使用的 GBK字符集 就包含了GB2312,或者说和GB2312 兼容,GB_2312 字符集包含了 6763个的 简体汉字,和682 个标准中文符号。
在这个标准中,每个汉字用2个字节来表示,每个字节的ascii码为 161-254 (16 进制A1 - FE),第一个字节 对应于 区码的1-94 区,第二个字节 对应于位码的1-94 位。
206(CE)是区码,对应码表纵坐标,210(D2)是区码,对应码表横坐标,查表得汉字“我”。
176(B0)是区码,对应码表纵坐标,174(AE)是区码,对应码表横坐标,查表得汉字“爱”。
1.利用ASCII码使数字转化为中文(GB_2312 字符集)
(1)两个特定的ASCII码值,放在数组中,按字符型(%c)输出就会组成一个汉字(2)对于ASCII码,33、-223、289表示的是同一个字符 ‘ !’,以256为一个循环。 两个ASCII码在输出的时候必须紧挨,中间不要有任何字符,不然会造成乱码。
2.举个例子
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=上
#include<iostream>
using namespace std;
int main()
{int i;int b[]={32,32,206,210,207,178,187,182,196,227,33,32,32};for(i=0;i<13;i++) { // 每两个ASCLL码组成一个汉字,其中32,32为两个空格(相当于一个汉字,2个字节);206,210组成'我';207和178组成'喜';187和182组成'欢';196和227组成'你';printf("%c",b[i]);}printf("\n");return 0;
}
输出结果为: 我喜欢你!(前面有两个空格)
#include<stdio.h>
int main()
{int i;for(i=129;i<=247;i++)printf("%d+%d=%c%c\t",i,i+2,i,i+2);printf("\n");return 0;
}
#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);//两个字节连起来凑成一个汉字。
}
#include<stdio.h>
int main()
{int i;printf("%c%c\n",0xC3,0xFC);return 0;
}
3.实例
#include<stdio.h>
#include<math.h>
#include<windows.h>
#include<time.h>
#define U 0.1
#define V 0.053
void SetColor(unsigned short ForeColor,unsigned short BackGroundColor)
{HANDLE hCon=GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleTextAttribute(hCon,(ForeColor%16)|(BackGroundColor%16*16));
}
int main()
{int i,s=0,t,a=10,b=11,c=12,d=13,e=14;int z[] = {32,32,206,210,207,178,187,182,196,227,33,32,32};float x,y;srand(time(NULL));for(y=1.3;y>=-1.1;y-=U){for(x=-2;x<1.4;x+=V){if((((x*x+y*y-1)*(x*x+y*y-1)*(x*x+y*y-1)-x*x*y*y*y)<=0)){if(y>=1.3-10*U||y<=1.3-11*U){s++;if(s%4==1){SetColor(a,0);printf("l");}if(s%4==2){SetColor(e,0);printf("o");}if(s%4==3){SetColor(c,0);printf("v");}if(s%4==0){SetColor(d,0);printf("e");}}else{ for(i = 0;i < 42;i++){ if(i<=14||i>=28){s++;if(s%4==1){SetColor(a,0);printf("l");}if(s%4==2){SetColor(e,0);printf("o");}if(s%4==3){SetColor(c,0);printf("v");}if(s%4==0){SetColor(d,0);printf("e");}}else{SetColor(b,0);printf("%c", z[i-15]);Sleep(50);}}break;}}elseprintf(" ");Sleep(1);}printf("\n");}printf("按任意键继续!");getchar(); while(1){system("cls");t=a;a=b;b=c;c=d;d=e;e=t;for(y=1.3;y>=-1.1;y-=U){for(x=-2;x<1.4;x+=V){if((((x*x+y*y-1)*(x*x+y*y-1)*(x*x+y*y-1)-x*x*y*y*y)<=0)){if(y>=1.3-10*U||y<=1.3-11*U){s++;if(s%4==1){SetColor(a,0);printf("l");}if(s%4==2){SetColor(b,0);printf("o");}if(s%4==3){SetColor(c,0);printf("v");}if(s%4==0){SetColor(d,0);printf("e");}}else{ for(i = 0;i < 42;i++){ if(i<=14||i>=28){s++;if(s%4==1){SetColor(a,0);printf("l");}if(s%4==2){SetColor(b,0);printf("o");}if(s%4==3){SetColor(c,0);printf("v");}if(s%4==0){SetColor(d,0);printf("e");}}else{SetColor(e,0);printf("%c", z[i-15]);}}break;}}elseprintf(" ");}printf("\n");}Sleep(1000);system("cls");}
}
运行结果如下: