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

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁(yè)
最近訪問(wèn)板塊 發(fā)新帖
查看: 4020 | 回復(fù): 11
打印 上一主題 下一主題

[C] 詢問(wèn)這段代碼的原理 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2010-11-29 23:07 |只看該作者 |倒序?yàn)g覽
下面這段代碼是從網(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;

}

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2010-11-29 23:19 |只看該作者
[code] some codes [/code]

論壇徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52雙子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午馬
日期:2013-10-18 21:43:38
3 [報(bào)告]
發(fā)表于 2010-11-30 08:55 |只看該作者
數(shù)字是內(nèi)碼,漢字表按拼音排序的(不考慮多音字)

論壇徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:50:28
4 [報(bào)告]
發(fā)表于 2010-11-30 08:58 |只看該作者
去看看GB2312的碼表就知道了

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2010-11-30 21:22 |只看該作者
回復(fù) 4# noword2k
搜了個(gè)gb2312的碼表,不過(guò)沒(méi)有看懂,鏈接如下 http://ash.jp/code/cn/gb2312tbl.htm

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2010-11-30 23:52 |只看該作者
回復(fù) 3# hellioncu
搜索了資料,漢字跟拼音沒(méi)有直接關(guān)系,而漢字內(nèi)碼根拼音有直接關(guān)系。想知道根據(jù)內(nèi)碼能得到漢字的全拼音

論壇徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52雙子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午馬
日期:2013-10-18 21:43:38
7 [報(bào)告]
發(fā)表于 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)戲

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2010-12-01 09:36 |只看該作者
回復(fù) 7# hellioncu
所謂的拼音碼表是不是漢字的拼音跟漢字的編碼是對(duì)應(yīng)的,還是漢字拼音跟漢字的內(nèi)碼是對(duì)應(yīng)的?好像漢字有很多碼說(shuō)法。

論壇徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52雙子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午馬
日期:2013-10-18 21:43:38
9 [報(bào)告]
發(fā)表于 2010-12-01 09:40 |只看該作者
回復(fù)  hellioncu
所謂的拼音碼表是不是漢字的拼音跟漢字的編碼是對(duì)應(yīng)的,還是漢字拼音跟漢字的內(nèi)碼是對(duì)應(yīng) ...
wolaiye05 發(fā)表于 2010-12-01 09:36



    就是拼音輸入法用的碼表,以前Windows下有工具處理碼表的

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2010-12-01 09:44 |只看該作者
估計(jì)編碼是按拼音順序編碼的吧

比如 啊 :0000 奧 0001
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP