国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
漢字的ASC值為什么會是負(fù)數(shù)

一、漢字的編碼

1.國標(biāo)碼

“中華人民共和國國家標(biāo)準(zhǔn)信息交換漢字編碼”,標(biāo)準(zhǔn)號GB2312-80。該編碼字符集收錄了一級漢字3755個,二級漢字3008個,圖形符號682個,共7445個。

在GB2312-80代碼表中,縱向分為0~93,共94行;橫向也是0~93,共94列。行與列分別用7位二進制碼表示,第一字節(jié)表示行,第二字節(jié)表示列。其值從0100001到1111110(十六進制為21-7E)。這正是ASCII碼的可打印字符的編碼范圍。國標(biāo)碼是將第一字節(jié)和第二字節(jié)連寫而得,習(xí)慣上稱第一字節(jié)為“高字節(jié)”,第二字節(jié)為“低字節(jié)”,一般用十六進制表示。

2.區(qū)位碼

整個代碼表分為94個區(qū)(對應(yīng)高字節(jié)),每個區(qū)94個位(對應(yīng)低字節(jié)),合起來就是區(qū)位碼,按如下規(guī)則確定:

高位內(nèi)碼=高字節(jié)國標(biāo)碼-20H

低位內(nèi)碼=低字節(jié)國標(biāo)碼-20H

例如,漢字“啊”在16行的第l列,則它的區(qū)位碼是“1001H”。

注:區(qū)位碼的高字節(jié)和低字節(jié)的取值范圍均是01H~5EH。

3.機內(nèi)碼

也就是內(nèi)碼。漢字區(qū)位碼的區(qū)碼和位碼的范圍在1~94內(nèi),如果直接作為機內(nèi)碼必將與基本的ASCII碼沖突。為避免與基本ASCII碼中的控制碼與字符碼的沖突,分別在區(qū)碼、位碼上增加A0H(即10100000)。所以,內(nèi)碼同樣占兩個字節(jié),分別稱為高位內(nèi)碼與低位內(nèi)碼,按如下規(guī)則確定:

高位內(nèi)碼=區(qū)碼+A0H

低位內(nèi)碼=位碼+A0H

例如,漢字“啊”的內(nèi)碼是“B0A1H”(即1011000010100001)。

注:高位內(nèi)碼與低位內(nèi)碼的取值范圍均是A1H~FEH。

二、漢字的輸出顯示

漢字的輸出主要是指漢字字形的輸出,方式主要是顯示和打印兩種。實際上,每一個漢字都是一個特定的圖形,用一個點陣來表示。點陣的每個點位只有兩種狀態(tài):有點或無點。若用二進制代碼來表示即為該位取值為1 表示有點,取值為0表示無點。

例如,如果用16×16點陣來表示一個漢字,則該漢字圖形由16行16列共256個點構(gòu)成,這256個點需用256個二進制的位來描述,需要32個字節(jié)來存儲用于存放圖形信息,這樣的二進制代碼串稱為漢字的“字?!?。

所有漢字和各種符號的點陣信息就組成漢字的“字模庫”(簡稱字庫)。字模的表示順序為:先從左到右,再從上到下。也就是先畫第一行左上方的8個點,再是右上方的8個點,然后是第二行左邊8個點,右邊8個點,以此類推。

三、漢字的顯示原理

1.從鍵盤輸入的漢字經(jīng)過鍵盤管理模塊,變換成機內(nèi)碼。

2.然后經(jīng)字模檢索程序,查到機內(nèi)碼對應(yīng)的點陣信息在字模庫的地址。

3.從字庫中檢索出該漢字點陣信息。

4.利用顯示驅(qū)動程序?qū)⑦@些信息送到顯示卡的顯示緩沖存儲器中。

5.顯示器的控制器把點陣信息整屏順次讀出,并使每一個二進制位與屏幕的一個點位相對應(yīng),就可以將漢字字形在屏幕上顯示出來。

四、用區(qū)位碼獲取漢字的點陣信息

以16×16的點陣漢字庫文件為例。一個漢字用了256個點共32個字節(jié)表示。漢字共分94區(qū),每個區(qū)有94位漢字。機內(nèi)碼用兩個字節(jié)表示,第一個字節(jié)存儲區(qū)號(qh),為了和ASCII碼相區(qū)別,范圍從十六進制的A1H開始(小于80H地為ASCII碼字符),對應(yīng)區(qū)碼的第一區(qū);第二個字節(jié)是位號(wh),范圍也從A1H開始,對應(yīng)某區(qū)中的第一個位碼。這樣,將漢字機內(nèi)碼減去A0A0H就得到該漢字的區(qū)位碼。從而可以得到漢字在字庫中的具體位置:

位置=(94*(qh-1) + wh-1) * 一個漢字字模占用的字節(jié)數(shù)

對于16×16的點陣漢字庫,漢字在字庫中的具體位置的計算公式就是:(94*(qh-1)+wh-1)*32。例如,“房”的機內(nèi)碼為十六進制的B7BF,則其區(qū)位碼是B7BFH-A0A0H=171FH,轉(zhuǎn)化為十進制就是2331,在漢字庫中的位置就是32*[94*(23-1)+(31-1)]=67136字節(jié)以后的32個字節(jié)為“房”的顯示點陣。

自己寫的一個demo,抓取漢字的ASC值:

可以看到用ASC方法抓取的ASCII的值是-12590,是一個負(fù)數(shù)。

ASCW返回的是Unicode(寬型)字符代碼,抓取的值是25105。

說到ASCII值,介紹幾個方法:

Asc、AscB、AscW 是 VBScript 中的三個函數(shù),其區(qū)別如下。

Asc(string) 返回與字符串的第一個字母對應(yīng)的 ANSI 字符代碼。返回值:英文 >0,中文 <0。

AscB(binstr) 適用于二進制數(shù)據(jù)。AscB 不是返回第一個字符的字符代碼,而是返回首字節(jié)。

AscW(string) 是為使用 Unicode 字符的 32 位平臺提供的。它返回 Unicode (寬型)字符代碼,因此可以避免從 ANSI 到 Unicode 的代碼轉(zhuǎn)換。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
計算機漢字顯示原理(點陣字)轉(zhuǎn)_家潤工作室
數(shù)制和編碼知識50問
刨根究底字符編碼之六——簡體漢字編碼中區(qū)位碼、國標(biāo)碼、內(nèi)碼、外碼、字形碼的區(qū)別及關(guān)系
hzk16的介紹以及簡單的使用方法
計算機中字符的表示
第四章 漢字信息處理基礎(chǔ)知識
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服