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;
}
}
else
printf(" ");
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;
}
}
else
printf(" ");
}
printf("\n");
}
Sleep(1000);
system("cls");
}
}
运行结果如下: