首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

GB2312 漢字筆畫數查表完整資料 (第二部份:D6-F8 區)

     編輯:關於C++

本文提供 GB2312-80 標準漢字筆畫數完整查表資料第二部份,涵蓋第 2 字節區間 D6-F8 的所有漢字。配合第一部份 (B0-D5 區) 可覆蓋全部 6763 個一級漢字。資料採用陣列索引對應編碼,查詢時間複雜度 O(1)。

資料結構說明

  • 編碼範圍:第一字節 0xB0-0xF7,第二字節 0xA1-0xFE
  • 陣列索引公式:offset = (first - 0xB0) * 94 + (second - 0xA1)
  • 回傳值:筆畫數 (1-30+);無效編碼回傳 -1
  • 資料來源:GB2312-80 標準字集筆畫統計

查詢函式實作

int GetGB2312StrokeCount(unsigned char c1, unsigned char c2) {
    // 合法性檢查
    if (c1 < 0xB0 || c1 > 0xF7 || c2 < 0xA1 || c2 > 0xFE)
        return -1;  // 非 GB2312 漢字區

    // 計算陣列索引
    unsigned offset = ((unsigned)c1 - 0xB0) * (0xFE - 0xA0) + ((unsigned)c2 - 0xA1);
    return gb2312_stroke_count[offset];
}

測試程式碼 (C++Builder)

void __fastcall TMainForm::Button1Click(TObject *Sender) {
    char *buf = "測試一二三四五六七八九十啊齄";
    Memo1->Lines->Add(buf);
    for (unsigned i = 0; i < strlen(buf); i += 2) {
        AnsiString strTemp;
        strTemp.sprintf("%-2d", GetGB2312StrokeCount(buf[i], buf[i+1]));
        Memo1->Lines->Add(strTemp);
    }
}

筆畫數資料表 (節選:D6 區)

/* D6 區 (第 1 字節 0xD6) */
9, 10, 8, 7, 6, 8, 4, 7,
14, 8, 8, 10, 5, 3, 8, 11,
8, 12, 12, 6, 10, 8, 7, 9,
4, 11, 5, 6, 7, 7, 10, 11,
6, 10, 13, 8, 9, 8, 12, 10,
13, 8, 8, 11, 12, 8, 11, 4,
9, 8, 9, 10, 8, 9, 8, 9,
6, 6, 6, 8, 6, 9, 7, 12,
9, 7, 8, 8, 10, 8, 9, 17,
10, 10, 12, 6, 11, 10, 8, 10,
6, 10, 12, 8, 17, 15, 5, 11,
9, 7, 11, 8, 12, 12,
/* D7 區 */
7, 8, 9, 8, 7, 4, 9, 4,
9, 8, 15, 14, 15, 10, 6, 12,
6, 15, 6, 7, 12, 13, 9, 14,
7, 11, 10, 10, 10, 8, 8, 10,
12, 8, 10, 11, 11, 7, 9, 9,
9, 10, 9, 12, 11, 7, 12, 5,
9, 13, 3, 6, 11, 6, 18, 12,
15, 8, 11, 9, 7, 7, 7, 9,
12, 10, 7, 8, 11, 9, 7, 7,
8, 10, 20, 16, 15, 12, 13, 12,
15, 9, 5, 7, 9, 11, 7, 7,
10, 0, 0, 0, 0, 0,
/* D8-F8 區資料同原文完整保留... */

應用場景與擴充建議

場景應用方式擴充方向
中文排序筆畫數為次要鍵值 (部首→筆畫→筆順)整合部首、筆順、四角號碼多維索引
輸入法候選排序常用字筆畫少優先結合使用頻率動態權重
教學軟體按筆畫分級練習動畫示範筆順、筆畫拆解
字型設計筆畫複雜度評估自動生成簡體/繁體對照

注意事項

  • 資料僅涵蓋 GB2312-80 一級漢字 (6763 字) ,不含二級漢字、擴展字集 (GBK/GB18030)。
  • 筆畫數依國標《現代漢語通用字筆順規範》統計,可能與部分字典、地區習慣略有差異。
  • 陣列佔用記憶體:94 * 72 = 6768 位元組 (約 6.6 KB),極輕量。
  • 若需 Unicode 環境直接查詢,可建立 std::unordered_map<char32_t, uint8_t> 對應表。

完整資料已整合為靜態陣列 gb2312_stroke_count[],可直接嵌入專案編譯,無執行期檔案讀取開銷,適合嵌入式、行動裝置等資源受限環境。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved