1. 程式人生 > >樹莓派進階之路 (032) -字符問題(2) - 用c語言怎樣得到一個漢字的GB2312編碼(轉)

樹莓派進階之路 (032) -字符問題(2) - 用c語言怎樣得到一個漢字的GB2312編碼(轉)

十六進制 字符串 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編碼(轉)