摹14●摹 1囊
l9髓 丰 3̂
齐 弃 靖尔 大 学学 报
J伽rn|l 0fQiq 嘶 劬
q 言实现不 字
|I∈峰 张宏烈 周长支
一 1 /
(齐弃暗拳太掌工鼍qb,一r /1 -i l r
夕/
蔫耍 奉文培出了用C语言赛丑CCDOS cKM最丰.I境 珥̂转蕞的方基,t方
法实真{王碉t果t好. .
关-司 文字 墨整兰 乏
0 前言
机冉玛疗瓣内码,它是系统内部处理和存贮投字面使用的代码.窳所属知,西文字符的机
相同,但它
Ascii码.丽汉字月根据桃蔓的不同,它们的内码囊||各不
t拽列这种对应规●,棘可以此为中阿 ,实现
不同汉字系统的内爵转换.
1 CCDOS与China汉字簟码对照裹
以H:机上爵种汉字系统a】 )s和Chi-
M 为倒t来讨论内码与交换码的对虚关系转换
方法.
下面列出部分汉字稿码对腻表.为便于用
敦学式子表达代码的对应关系,将交换码用它
的相对序号代瞢.同时,将内码用十进翻表示,
并分捌起十变量名,得弼下表汉字内码各字节
的敦值范圈.
2 转换算法
下面分捌培出两种汉字内爵转换的具钵算法,算莹D ∞ 内码转换为a 妁6内码)假
定已知从蠢文件中属序读取三十字节敦据L J,K.
D1、崩 崩是否为汉字)如暴不满足I≥71J≥t8,K≥65.爿不是汉字,转DI6
.
D2、诛 帮 玮 的相对翻 参量)I1 一71,J1 一4&K1≤K一65’
D3、啭换为交换码的序号)
】1 。6O+J1*26+K1≥.F E选基我德 I1、J1,K1从整体 匕看柞 —卜持嘲_洲 敦
,它
的位权分捌为26o、26、1.用上述公式实际上墨将这十特殊进翻致按位权晨开得霸—个十进翻
轰F).
D4, !换码序号转换成o0D0S两字节内码的■移量)
F%9‘≥N1、INT CF/94)~ l
t麓 膏囊tl997—∞一27
r
维普资讯 http://www.cqvip.com
齐 齐唔 尔丈 学学报 1 9 9 8l
D5、(形成 C∞ 0S的两字节内码)
176+M1≥M 161+N1≥N
D6、(判断是否结束)如果源文件结柬,划本算法告终;否阿读下一个字节,调整指针并返
回D1
倒如,汉字 阿 ,在China中的内码为714866,按上述算法可求出I1=0.J1=o.K1=1和
F=I,(因为I=71.J=48.K=66),进一步求出N1=1.M1一O以及M=176.N=162.即CC-
D(]S的内码为176、165。
算法H C )s内码转换为China内码)假定已从源文件中读取两字节数据M。N.
H1、(判断是否为汉字)如不满足M>~176.N≥161.则不是汉字,转H6。
H2、(求备字节相对偏移量)M-176~>M1.N-161>~N1。
H3、(转换为交换码序号)M1*94+NI>/F.
H4、(交换码序号转换为China三个字节内码蔼移量)F%26≥K1
INT( /56) 10) 1
rr /560) 1
H5、 威C,him 的三字节内码)
I1+71>_-I
J1+48~>J
K1+65>~K
H6、(判断是否结束)如果豫文件结束剐算法告终;否则读下一个字节,诃整指针返回
H1。
例如,汉字 哎 ,在CCDOS中的内码为176、165,即M=176.N=165按算法H可采出
M1=0.N1=4和F一4.进一步求出K1;4,Jl=0,I1=0以及I=71.3=48.K=69.即