線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2135
推到 Plurk!
推到 Facebook!

嘸蝦米輸入法 BIG5 碼反查詢參考檔 規格使用說明

 
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-13 10:34:22 IP:61.218.xxx.xxx 未訂閱
            ┌─────────────────────────┐
        │【嘸蝦米輸入法】 BIG5 碼反查詢參考檔 規格使用說明 │
        └─────────────────────────┘        一、前言:            我將此參考檔的格式公開,以利任何人在不同的環境、不同的機器
    、不同的作業系統、或是不同的應用程式中撰寫其介面程式。要注意的
    是,本參考檔的著作權屬於敝人(謝崇祥),而使用權則屬於合法擁有
    本參考檔之使用者。非經著作權利人正式授權,嚴禁將此參考檔作任何
    型式之修改、出租、出售等行為。        二、字根按鍵:嘸蝦米輸入法所使用的按鍵有            ① A - Z 等 26 個字母鍵,用來輸入中文。
        ② , . ' [ ] 等 5 個符號鍵,用來輸入符號。
        ③ Space 空白鍵,當有輸入字根時,用來下達組字命令。        三、字根排列與編碼:        ┌───┬───┬───┐     ┌───┬───┬───┐
    │字  根│十進位│二進位│     │字  根│十進位│二進位│
    ├───┼───┼───┤     ├───┼───┼───┤
    │SPACE │   0  │00000 │     │  P   │  16  │10000 │
    │  A   │   1  │00001 │     │  Q   │  17  │10001 │
    │  B   │   2  │00010 │     │  R   │  18  │10010 │
    │  C   │   3  │00011 │     │  S   │  19  │10011 │
    │  D   │   4  │00100 │     │  T   │  20  │10100 │
    │  E   │   5  │00101 │     │  U   │  21  │10101 │
    │  F   │   6  │00110 │     │  V   │  22  │10110 │
    │  G   │   7  │00111 │     │  W   │  23  │10111 │
    │  H   │   8  │01000 │     │  X   │  24  │11000 │
    │  I   │   9  │01001 │     │  Y   │  25  │11001 │
    │  J   │  10  │01010 │     │  Z   │  26  │11010 │
    │  K   │  11  │01011 │     │  ,   │  27  │11011 │
    │  L   │  12  │01100 │     │  .   │  28  │11100 │
    │  M   │  13  │01101 │     │  '   │  29  │11101 │
    │  N   │  14  │01110 │     │  [   │  30  │11110 │
    │  O   │  15  │01111 │     │  ]   │  31  │11111 │
    └───┴───┴───┘     └───┴───┴───┘        四 、參考檔格式與字根的編碼:            參考檔最上面的 34042 Bytes 為一個 Index TABLE,各別指到各
    BIG5 碼的嘸蝦米字根對應在 Data TABLE 的位置。每一個位置為一個 2
    Bytes 無號整數 (unsigned integer),一共有 17021 個。每個位置在
    實際的檔案中是以 low byte, high byte 的順序來表示一個無號整數。            中文字以 Big-5 內碼為例:
            其高位元組範圍是 A1H ~ FEH    共 126 個
              ( High )       8EH ~ A0H
                             81H ~ 8DH
              低位元組範圍是 40H ~ 7EH    63個  共 157 個
              ( Low )        A1H ~ FEH    94個            我依下面的 Hash Function 算出 offset 在 Index TABLE 的位置:                hash = (High*765 + Low) % 17021
            offset = Index[hash]            接下來即為 Data TABLE 以 3 bytes 為一個字單位                位置 0  ┌──────────┐
                    │                    │ 3 bytes  = 24 bits
            位置 3  ├──────────┤
                    │                    │ 3 bytes
            位置 6  ├──────────┤
                    │                    │ 3 bytes
            位置 9  ├──────────┤
                    │                    │ 3 bytes
            位置 12 ├──────────┤
                    │                    │ 3 bytes
            位置 15 ├──────────┤
                    │                    │ 3 bytes
            位置 18 ├──────────┤
                              .
            位置 n            .
                              .
                    │                    │
                    ├──────────┤
                    │                    │
            位置END └──────────┘            在每個 24 bits 中:                 Byte 0           Byte 1            Byte 2
       ┌┬┬┬┬┬┬┬┼┬┬┬┬┬┬┬─┼┬┬┬┬┬┬┬─┐
       │        │        │        │  │        │  │  │
       │ 字根一 │ 字根二 │ 字根三 │A│ 字根四 │A│B│
       │        │        │        │  │        │  │  │
       └┴┴┴┴┴┴┴┼┴┴┴┴┴┴┴─┼┴┴┴┴┴┴┴─┘
       bit0                                             bit23  (A: unused)            前 15 個bits,分別以 5 bits 表一組字根的前三根,Byte 2 的前
    5 bits 表第四根。最後的 bit(B),則表示是否為多組字根的第一組
    字根。此 bit 為零的字,也都屬於此中文字的嘸蝦米合法字根。        五、如何使用參考檔:            舉例說明,當使用者鍵入「奐」後。                High = 0xAB (?
            Low  = 0xB7 (?
            hash = (High*765 + Low) % 17021 = 11851            到 Index Table 的第 11851 位置,查得 offset = 6489;再從
    Data Table 的第 6489 位置一次取 3 bytes,並檢查下一 3 bytes 的
    第 23 bit 是否為 0,是的話,表示此組字根也是合法嘸蝦米字根,重
    覆這過程,直到此 bit 為 1。(因為這是另外一中文字的第一組根)            在此例中:Data TABLE 的 6489、6490、6491 byte 分別為 0x71、
    0x84、0x01,轉碼得字根「NFB 」,且第 23 bit 為 1,表示此字根為
    第一組字根,我們再檢查下一 3 bytes:0x738420,轉碼得字根「NNBD」
    ,且第 23 bit 為 0,表示還有下一組字根。同理我們還可找到「NNRD」
    、「NOBB」、「NORB」這三組字根。                                                          交通大學資訊科學研究所
                                                         謝崇祥  Kenny Shieh
                                                   新竹市交通大學六舍 206 室
                                                 kenny@cindy.cis.nctu.edu.tw
                                                   kenny.bbs@cis.nctu.edu.tw
                                                    gis84507@cis.nctu.edu.tw        【註 1】嘸蝦米字根原則上最多四碼,在編碼時,不足四碼的以 Space 替代。
    【註 2】嘸蝦米輸入法著作權屬於行易有限公司所有。
    【註 3】所附檔案:liucode.txt 本檔
                      liucode.tab BIG5 碼反查詢參考檔
                      liucode.c   範例程式原始碼
                      liucode.exe MSDOS 版範例程式
                      liucode     UNIX 版範例程式    
發表人 - ddy 於 2003/03/13 10:40:21
系統時間:2024-04-26 3:47:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!