樹莓派進階之路 (032) -字符問題(2) - 用c語言怎樣得到一個漢字的GB2312編碼(轉)
阿新 • • 發佈:2017-09-25
十六進制 字符串 c++ gb2 十進制 轉換 tails 表示 blog
C/C++支持的是ASCII,不過漢字編碼中,GB2312與ASCII是兼容的,所以可以在C中獲得漢字的GB2312編碼
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編碼了
%a,%A 讀入一個浮點值(僅C99有效) %c 讀入一個字符 %d 讀入十進制整數 %i 讀入十進制,八進制,十六進制整數 %o 讀入八進制整數 %x,%X 讀入十六進制整數 %s 讀入一個字符串,遇空格、制表符或換行符結束。 %f,%F,%e,%E,%g,%G 用來輸入實數,可以用小數形式或指數形式輸入。 %p 讀入一個指針 %u 讀入一個無符號十進制整數 %n 至此已讀入值的等價字符數 %[] 掃描字符集合 %% 讀%符號
轉載:http://blog.csdn.net/han_kin/article/details/47838715
樹莓派進階之路 (032) -字符問題(2) - 用c語言怎樣得到一個漢字的GB2312編碼(轉)