c语言字符类型强制换成内码,C语言实现不同汉字系统的内码转换方法

摹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.即

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值