C語(yǔ)言中,我們用整數(shù)輸出字符得到的就是該字符的ASII碼,如用整數(shù)輸出a,得到97
但是,要是用字符數(shù)組存的漢字,怎樣獲得他的編碼?漢字用的是兩個(gè)字節(jié)存儲(chǔ),是不是這兩個(gè)字節(jié)都有ASII碼?那該怎么獲得他們?然后把他們統(tǒng)一成一個(gè)編碼?
漢字編碼分好幾種,不知道你想問(wèn)的是哪種?
C/C++支持的是ASCII,不過(guò)漢字編碼中,GB2312與ASCII是兼容的,所以可以在C中獲得漢字的GB2312編碼
GB2312是兩個(gè)字節(jié)的,第一字節(jié)是高八位,第二字節(jié)是低八位,比如下面的程序:
#include<stdio.h>
#include<string.h>
int main()
{
char a[5];
strcpy(a,"啊");
printf("%XH %XH\n",(unsigned char)a[0],(unsigned char)a[1]);
return 0;
}
a[0]是“啊”字的高八位,a[1]是低八位,程序運(yùn)行結(jié)果是a[0]=B0 a[1]=A1,用16進(jìn)制表示的,所以“啊”字的GB2312編碼是B0A1了~
輸出時(shí)要強(qiáng)制轉(zhuǎn)換成unsigned char,不然就變成負(fù)數(shù)了,因?yàn)榫幋a是以8位的無(wú)符號(hào)整數(shù)為單位的
當(dāng)然也可以轉(zhuǎn)成10進(jìn)制啦,比如
int b;
b=(unsigned char)a[0]*256+(unsigned char)a[1];
b即為漢字的10進(jìn)制GB2312編碼了