对于只认识0和1的机器来说是无法直接识别字符及汉字的。将ASCII表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。而剩下的低128位则留给英文字符使用,即英文的内码。如下程序所示:
#include<stdio.h>
void main()
{
unsigned char *s,*e,*c;
char *c2,*c3,*c4;
c2 = "王新征";
c4 ="你好";
e = "abc ABC";
c = "你好";
// 输出英文字符及空格ASCII码
s = e;
printf("输出英文字符及空格内码\n");
while(*s != 0)
{
printf("%3d",*s);
s++;
}
printf("\n将unsigned char转为char后输出\n");
// 将unsigned char字符串转为char字符串
printf("%s\n",(char*)c);
// 或者
c3 = (char*)c;
printf("%s\n",c3);
// 输出汉字内码
printf("输出汉字内码\n");
s = c;
while(*s != 0)
{
printf("%3d",*s);
s++;
}
printf("\n将char字符串转为unsigned char字符串\n");
//将char字符串转为unsigned char字符串
s = (unsigned char*)c4;
while(*s != 0)
{
printf("%3d",*s);
s++;
}
}
输出如下:
输出英文字符及空格内码
97 98 99 32 65 66 67
将unsigned char转为char后输出
你好
你好
输出汉字内码
196227186195
将char字符串转为unsigned char字符串
196227186195