自制漢字取模軟件,學(xué)嵌入式的要看
學(xué)嵌入式開發(fā)這么長時(shí)間來一直都在使用別人的取模軟件,很希望有自己的取模軟件。
今天晚上讀了一下漢字編碼和點(diǎn)陣的文章做程序如下。希望對(duì)無協(xié)嵌入式開發(fā)有幫助
在計(jì)算機(jī)中英文一般使用 ASCII 碼來表示,而漢字編碼使用的是擴(kuò)展 ASCII 碼,用兩個(gè)ASCII碼來表示一個(gè)漢字。一個(gè)ASCII碼占用一個(gè)字節(jié),所有在存儲(chǔ)時(shí)英文是占用一個(gè)字節(jié),而漢字占用兩個(gè)字節(jié)。
擴(kuò)展 ASCII 碼:也就是 ASCII 碼的最高位是1的 ASCII 碼,一個(gè)漢字由兩個(gè)擴(kuò)展 ASCII 碼組成,第一個(gè)擴(kuò)展 ASCII 碼用來存放區(qū)碼,第二個(gè)擴(kuò)展 ASCII 碼用來存放位碼。
區(qū)位碼:在 GB2312-80 標(biāo)準(zhǔn)中,將所有的漢字分為94個(gè)區(qū),每個(gè)區(qū)有94個(gè)位可以存放94個(gè)漢字,形成了人們常說的區(qū)位碼,這樣總共就有 94*94=8836 個(gè)漢字。
點(diǎn)陣字庫:漢字點(diǎn)陣數(shù)據(jù)就是按照這個(gè)區(qū)位的順序來存放的,也就是最先存放的是第一個(gè)區(qū)的漢字陣數(shù)據(jù),在每一個(gè)區(qū)中有是按照位的順序來存放的。
漢字機(jī)內(nèi)碼、國標(biāo)碼和區(qū)位碼三者之間的關(guān)系為:區(qū)位碼(十進(jìn)制)的兩個(gè)字節(jié)分別轉(zhuǎn)換為十六進(jìn)制后加20H得到對(duì)應(yīng)的國標(biāo)碼;機(jī)內(nèi)碼是漢字交換碼(國標(biāo)碼)兩個(gè)字節(jié)的最高位分別加1,即漢字交換碼(國標(biāo)碼)的兩個(gè)字節(jié)分別加80H得到對(duì)應(yīng)的機(jī)內(nèi)碼;區(qū)位碼(十進(jìn)制)的兩個(gè)字節(jié)分別轉(zhuǎn)換為十六進(jìn)制后加A0H得到對(duì)應(yīng)的機(jī)內(nèi)碼
國標(biāo)碼 由兩個(gè)擴(kuò)展ascii碼組成
漢字區(qū)位碼的存放實(shí)在擴(kuò)展 ASCII 基礎(chǔ)上存放的,并且將區(qū)碼和位碼都加上了32,然后存放在兩個(gè)擴(kuò)展 ASCII 碼中。具體的說就是:
漢字的
第一個(gè)擴(kuò)展ASCII碼 = 128+32 + 漢字區(qū)碼
第二個(gè)擴(kuò)展ASCII嗎 = 128+32 + 漢字位碼
程序要用的字庫HZK16
程序如下
#include "stdio.h"
#includeiostream>
using namespace std;
void getCode(unsigned char str[],unsigned char data[]);
void main()
{
unsigned char str[] = {"王挺帥"};
unsigned char data[32];
for(int m = 0;m 1;m++){
getCode(str+m*2,data);
評(píng)論