最近偶然有人問到這個相關字符編碼的問題,所以百度了下參考了這兩個資料,進行了簡單分析。
**********************************************************************
參考資料一: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碼 , 編輯成中文是“我愛朱慧”。
寫成代碼:
#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;
}
運行結果:

看到這裡,好像明白了。
漢字是雙字節,且兩個數字可以 編碼一個漢字。
總結下就是:
206+210=我
176+174=愛
214+236=朱
187+219=慧
呵呵,到這裡就沒必要再深究啦。
可是,突發奇想,想找到用哪兩個數字可以組合出“你”字?
想搞出“我愛你”編碼!嘿嘿。
於是,我進行了大量測試。沒辦法,不是很懂這個,只好用循環來做啦。
編寫代碼如下。
測試發現129到247有編碼漢字,其余范圍無法編碼成漢字。
測試代碼一:
#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;
}
運行結果:

測試代碼二:
#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;
}
運行結果:

測試代碼三:
#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;
}

......
以此類推,測試了幾組代碼後總結如下:
206+210=我
找了半天都沒找到“你”,汗,真的累了。
又百度,看看有沒有好的其他便捷的方法。
搜索了半天,終於找到了資料二。
*****************************************************************************
參考資料二:http://zhidao.baidu.com/link?url=TyO1WecgunJH_ZOeeSqX1o8O8QPxga2B7JsMrQRzWajNs7O8Nh-g-Yr3B-zzAV1vO_vDqcn6qNDVqj8DwHDH2q
題目:
C語言中兩位ASCLL碼可以表示漢字(如202,214表示手)請問兩位ASCLL怎麼與GB2312中的區位碼相對應
“啊”是國標碼中的第一個是1601,用ASCLL碼怎麼表示它
答案:
#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(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;
}
運行結果:

再修改代碼:
#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;
}
運行結果:

好了,大功告成了!哈哈,終於搞出來了。
最終完善代碼:
#include<stdio.h>
int main()
{
int i;
printf("%c%c%c%c%c%c\n",206,210,176,174,-60,-29);
return 0;
}
運行結果:

哈哈,好了,打完收工。准備睡覺。