GB2312是兩個字節的,第一字節是高八位,第二字節是低八位,比如下面的程序:
#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]是低八位,程序運行結果是a[0]=B0 a[1]=A1,用16進製表示的,所以“啊”字的GB2312編碼是B0A1了~
輸出時要強制轉換成unsigned char,不然就變成負數了,因爲編碼是以8位的無符號整數爲單位的
當然也可以轉成10進制啦,比如
int b;
b=(unsigned char)a[0]*256+(unsigned char)a[1];
b即爲漢字的10進制GB2312編碼了