亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 詢問(wèn)這段代碼的原理 [打印本頁(yè)]

作者: wolaiye05    時(shí)間: 2010-11-29 23:07
標(biāo)題: 詢問(wèn)這段代碼的原理
下面這段代碼是從網(wǎng)上來(lái)的,用于得到一行中文的每個(gè)中文的首個(gè)字母,但就是怎么得到首個(gè)字符時(shí)通過(guò)getpychar函數(shù)來(lái)實(shí)現(xiàn),想知道是什么原理得到,所以就貼了這些代碼,詢問(wèn)知道的人?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <glib.h>

gchar getpychar(guchar uword0 , guchar uword1)
{
        gchar pychar;

        int i1 = (short)(uword0 - '\0');
        int i2 = (short)(uword1 - '\0');

        int tmp = i1 * 256 + i2;

        if(tmp >= 45217 && tmp <= 45252) pychar = 'A';
        else if(tmp >= 45253 && tmp <= 45760) pychar = 'B';
        else if(tmp >= 45761 && tmp <= 46317) pychar = 'C';
        else if(tmp >= 46318 && tmp <= 46825) pychar = 'D';
        else if(tmp >= 46826 && tmp <= 47009) pychar = 'E';
        else if(tmp >= 47010 && tmp <= 47296) pychar = 'F';
        else if(tmp >= 47297 && tmp <= 47613) pychar = 'G';
        else if(tmp >= 47614 && tmp <= 4811 pychar = 'H';
        else if(tmp >= 48119 && tmp <= 49061) pychar = 'J';
        else if(tmp >= 49062 && tmp <= 49323) pychar = 'K';
        else if(tmp >= 49324 && tmp <= 49895) pychar = 'L';
        else if(tmp >= 49896 && tmp <= 50370) pychar = 'M';
        else if(tmp >= 50371 && tmp <= 50613) pychar = 'N';
        else if(tmp >= 50614 && tmp <= 50621) pychar = 'O';
        else if(tmp >= 50622 && tmp <= 50905) pychar = 'P';
        else if(tmp >= 50906 && tmp <= 51386) pychar = 'Q';
        else if(tmp >= 51387 && tmp <= 51445) pychar = 'R';
        else if(tmp >= 51446 && tmp <= 52217) pychar = 'S';
        else if(tmp >= 52218 && tmp <= 52697) pychar = 'T';
        else if(tmp >= 52698 && tmp <= 52979) pychar = 'W';
        else if(tmp >= 52980 && tmp <= 53640) pychar = 'X';
        else if(tmp >= 53689 && tmp <= 54480) pychar = 'Y';
        else if(tmp >= 54481 && tmp <= 55289) pychar = 'Z';
        else pychar = ' ';

        return pychar;
}

gchar *getpystring(const gchar *in)
{
        gsize inlen , olen , i , j = 0;
        gchar *gword = g_convert(in , strlen(in)
                        , "gb2312" , "utf8" , &inlen , &olen , NULL);

        guchar *uword = (guchar*)gword;
        gchar *out = (gchar*)malloc(olen);

        memset(out , 0 , olen);

        for(i = 0 ; i < olen ; i++){
                if(uword[i] >= 0xa1){
                        if(uword[i] != 0xa3){
                                out[j++] = getpychar(uword[i] , uword[i + 1]);
                                i ++;
                        }
                }else{
                        out[j++] = (gchar)uword[i];
                }
        }

        return out;

}

int main(int argc , char **argv)
{
        printf("%s\n" , getpystring("linux是一個(gè)出色的操作系統(tǒng)");
        return 0;

}
作者: 程序匠人    時(shí)間: 2010-11-29 23:19
[code] some codes [/code]
作者: hellioncu    時(shí)間: 2010-11-30 08:55
數(shù)字是內(nèi)碼,漢字表按拼音排序的(不考慮多音字)
作者: noword2k    時(shí)間: 2010-11-30 08:58
去看看GB2312的碼表就知道了
作者: wolaiye05    時(shí)間: 2010-11-30 21:22
回復(fù) 4# noword2k
搜了個(gè)gb2312的碼表,不過(guò)沒(méi)有看懂,鏈接如下 http://ash.jp/code/cn/gb2312tbl.htm
作者: wolaiye05    時(shí)間: 2010-11-30 23:52
回復(fù) 3# hellioncu
搜索了資料,漢字跟拼音沒(méi)有直接關(guān)系,而漢字內(nèi)碼根拼音有直接關(guān)系。想知道根據(jù)內(nèi)碼能得到漢字的全拼音
作者: hellioncu    時(shí)間: 2010-12-01 08:23
回復(fù)  hellioncu
搜索了資料,漢字跟拼音沒(méi)有直接關(guān)系,而漢字內(nèi)碼根拼音有直接關(guān)系。想知道根據(jù)內(nèi)碼能得 ...
wolaiye05 發(fā)表于 2010-11-30 23:52



    要得到全拼音,找個(gè)拼音碼表吧,靠那個(gè)函數(shù)沒(méi)戲
作者: wolaiye05    時(shí)間: 2010-12-01 09:36
回復(fù) 7# hellioncu
所謂的拼音碼表是不是漢字的拼音跟漢字的編碼是對(duì)應(yīng)的,還是漢字拼音跟漢字的內(nèi)碼是對(duì)應(yīng)的?好像漢字有很多碼說(shuō)法。
作者: hellioncu    時(shí)間: 2010-12-01 09:40
回復(fù)  hellioncu
所謂的拼音碼表是不是漢字的拼音跟漢字的編碼是對(duì)應(yīng)的,還是漢字拼音跟漢字的內(nèi)碼是對(duì)應(yīng) ...
wolaiye05 發(fā)表于 2010-12-01 09:36



    就是拼音輸入法用的碼表,以前Windows下有工具處理碼表的
作者: 學(xué)與思    時(shí)間: 2010-12-01 09:44
估計(jì)編碼是按拼音順序編碼的吧

比如 啊 :0000 奧 0001
作者: jhui66    時(shí)間: 2010-12-05 10:49
這個(gè)很有難度,不懂
作者: qishking    時(shí)間: 2010-12-06 09:03
發(fā)代碼[code][/code]




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2