如何取一个字符(汉字英文)的区位码,万分感谢!

huainan 2003-08-22 10:16:55
如何取一个字符(汉字英文)的区位码,万分感谢!
用c,例如char *a="万分感谢ok!"
...全文
145 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
CrazyGentleman 2003-08-22
  • 打赏
  • 举报
回复
汉字是以内码形式存储的,16以前的区,存的是符号、数字、其他字符。
zhyinfo 2003-08-22
  • 打赏
  • 举报
回复
如果用编译器,会将汉字直接编译为机内码,如“啊”的机内码为 B0 A1

则区码为 B0H-A0H=10H= 16
位码为 A1H-A0H=01H= 1

huainan 2003-08-22
  • 打赏
  • 举报
回复
是内码-0xa0?
内码事怎末取得的?
谢谢!
abc96340 2003-08-22
  • 打赏
  • 举报
回复
至于英文,直接查区位码表就行了。
abc96340 2003-08-22
  • 打赏
  • 举报
回复
如为汉字,高低8位各减0xA0即得。
Hermit 2003-08-22
  • 打赏
  • 举报
回复
输入一个汉字得到是它的内码,由两个字节组成,两个字节分别减去A0H(160),得到的前一个字节是区,后一个字节是位,算该字在16点阵字库中的位置时,((区-DD)*98+位)*32,32指每个16点阵汉字32字节.注意:有些字库前16区省略一些无用的区故要减去DD.公式给的不一定完全正确,
汉字2312的字库
是87区,每区94个汉字,1-9区是标点,制表符号,日文X假名等,10-15空,16-55是汉字
一级字库(常用),5590-5594空.56区到87区是二级字库.共6763个中文.
16*16点阵字库就是32字节一个字.但不同的16*16点阵字库的
排列方法不一定一样,如UCDOS和CCDOS,有的还把10-15区空的压缩了.
机内码就是你在DELPHI中获得的输入的汉字字符.比如:"啊"的16进制表示.
区码 := (机内码高8位-$A0);
位码 := (机内码低8位-$A0);
偏移量 := ((区码-1)*94+(位码-1))*32
注意区码和位码是以1为开始的.
huainan 2003-08-22
  • 打赏
  • 举报
回复
char *a="啊";
char a1,a2;
a1=*a;
a++;
a2=*a;
结果不得!
guyue_god 2003-08-22
  • 打赏
  • 举报
回复
写一个c程序来读字符,汉字由两字节组成,第一个读进来得是区位吗,第二各为位码,各减去$a1后读hzk16,就获得在字库中得位置

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧