| 订阅 | 在线投稿
分享
 
 
当前位置: 王朝网络 >> c/c++ >> C程序实现汉字内码与GB码 C cheng xu shi xian han zi nei ma yu GB ma
 

C程序实现汉字内码与GB码

2008-06-01 02:06:33 编辑來源:互联网 繁體版 评论
 
 
本文为【C程序实现汉字内码与GB码】的汉字拼音对照版显示拼音
  // HZEncode.cpp : Defines the entry point for the console application.

  //

  /*

  shenkaowenxian

  hanzidebianmahebiaoshi

  1)hanzijiaohuanma(guobiaoma) hanzijiaohuanma(guobiaoma)zhuyaoyongyuhanzixinxijiaohuan

  guobiaomayiguojiabiaozhunju1980nianbanbudexinxijiaohuanyonghanzibianmazifuji"jibenji(daihaoweiGB2312 80)guidingdehanzijiaohuanmazuoweiguojiabiaozhunhanzibianma GB2312 80zhonggongyou7445gezifufuhao hanzifuhao6763ge yijihanzi3755ge(anhanyupinyinzimushunxupailie) erjihanzi3008ge(anbushoubihuashunxupailie) feihanzifuhao682ge GB2312 80guidingsuoyoudeguobiaomahanzijifuhaozuchengyige94 94defangzhenzaicifangzhenzhongmeiyixingchengweiyige"qu"meiyiliechengweiyige"wei"zhegefangzhenshijishangzuchengyigeyou94gequ(bianhaoyou01dao94)meigequyou94gewei(bianhaoyou01dao94)dehanzizifuji yigehanzisuozaidequhaoheweihaodezuhejiugouchenglegaihanzide"quweima"qizhonggaoliangweiweiquhaodiliangweiweiweihaozheyangquweimakeyiweiyidiquedingmouyihanzihuozifu;fanzhirenheyigehanzihuofuhaodouduiyingyigeweiyidequweimameiyouchongma

  quweimafenbuqingkuangruxia

  qu hao nei rong 1qu jianpanshangmeiyoudegezhongfuhao 2qu gezhongxuhao 3qu jianpanshangdegezhongfuhao(anzhongwenfangshigeichu) 4 -5qu riwenzimu 6qu xilazimu 7qu ewenzimu 8qu biaoshipinyinshengtiaodemuyinjipinyinzimumingcheng 9qu zhibiaofuhao 10- 15qu weiyong 16-55qu yijihanzi(anpinyinzimushunxupailie) 56- 87qu erjihanzi(anbushoubihuashunxupailie) 88- 94qu zidingyihanzi

  youshangkeyikanchusuoyouhanziyufuhaode94gequkeyifenweisigezu

  1 -15quweituxingfuhaoquqizhong1 9quweibiaozhunfuhaoqu;10 15quweizidingyifuhaoqu

  16 -55quweiyijihanziqubaohan3755gehanzizhexiequzhongdehanzianhanyupinyinshunxupaixutongyinzianbihuashunxuliechu

  56 -87quweierjihanziqubaohan3008gehanzizhexiequzhongdehanzishianbushoubihuashunxupaixude

  88 -94quweizidingyihanziqu

  guobiaomaguidingmeigehanzi(baokuofeihanzideyixiefuhao)you2zijiedaimabiaoshimeigezijiedezuigaoweiwei0zhi使shiyongdi7weierdi7weidebianmazhongyouyou34geshiyongyukongzhiyongdezheyangmeigezijiezhiyou27 - 34 = 94gebianmayongyuhanzi2gezijiejiuyou94 94=8836gehanzibianmazaibiaoshiyigehanzide2gezijiezhonggaozijieduiyingbianmabiaozhongdexinghaochengweiquhao;dizijieduiyingbianmabiaozhongdeliehaochengweiweihao

  hanziguobiaomadefanweiyongerjinzhibiaoshishi 00100001 00100001 01111110 01111110 (1+32)10 (1+32)10 (94+32)10 (94+32)10 7 weiASCIImashi128gezifuzuchengdezifujiqizhongbianmazhi0 31(00000000 00011111)buduiyingrenheyinshuazifutongchangchengweikongzhifuyongyujisuanjitongxinzhongdetongxinkongzhihuoduijisuanjishebeidegongnengkongzhibianmazhi32(00100000)shikonggezifuSPbianmazhi127(1111111)shishanchuzifuDEL

  hanziguobiaomadeqishierjinzhiweizhixuanze00100001ji(33)10shiweiletiaoguoASCIImade32gekongzhizifuhekonggezifusuoyihanziguobiaomadegaoweihediweifenbiebiduiyingdequweimada(32)10huo(00100000)2huo(20)Hji guobiaomagaowei = quma + 20H (Hbiaoshishiliujinzhi) guobiaomadiwei = weima + 20H

  2) hanzijineima(neima)(hanzicunchuma)

  hanzijineima(neima)(hanzicunchuma)dezuoyongshitongyilegezhongbutongdehanzishurumazaijisuanjineibudebiaoshi weilejianghanzidegezhongshurumazaijisuanjineibutongyiqilaijiuyoulezhuanyongyujisuanjineibucunchuhanzi使shiyongdehanzijineimayongyijiangshurushi使shiyongdeduozhonghanzishurumatongyizhuanhuanchenghanzijineimajinxingcunchuyifang便bianjineidehanzichuli hanzijineimashizaijisuanjineibucunchuchulidedaimajisuanjijiyaochulihanziyouyaochuliyingwenyincijisuanjibixunengqubiehanzizifuheyingwenzifuyingwenzifudedejineimashizuigaoweiwei0de8weiASCIImaweilebuyu7weiASCIImafashengchongtubaguobiaomameigezijiedezuigaoweiyou0gaiwei1qiyuweibubiandebianmazuoweihanzizifudejineima

  hanzijineimadefanweiyongerjinzhibiaoshishi 10100001 10100001 11111110 11111110 jineimadegaoweihediweibiduiyingdeguobiaomadegaoweihediweida(128)10huo(10000000)2huo(80)H ji jineimagaowei = guobiaomagaowei + 80H jineimadiwei = guobiaomadiwei + 80H youyinwei guobiaomagaowei = quma + 20H guobiaomadiwei = weima + 20H suoyi jineimagaowei = quma + A0H jineimadiwei = weima + A0H yejiushishuojineimagaoweihejineimadiweifenbiebiduiyingdequmaheweimada(160)10huo(10100000)2huo (A0)H liruhanzi"a"dequweimawei"1601"qizhongqumawei(16)10huo(10)Hweimawei(01)10huo(01)H ze jineimagaowei = 10H + A0H = B0H jineimadiwei = 01H + A0H = A1H suoyi jineima= B0A1H

  

  yixiashiyinyongpianduan

  <!--[if !supportEmptyParas]--> <!--[endif]-->

  3) hanzishuruma(waima)

  hanzishuruma(waima)shiweiletongguojianpanzifubahanzishurujisuanjiershejideyizhongbianma yingwenshurushixiangshurushenmezifu便biananshenmejianshurumahejineimayizhihanzishurushikenengyaoanjigejiancainengshuruyigehanzi hanzishurufanganyouchengbaishangqiangedanshizheqianchawanbiedewaimashurujinjisuanjihoudouhuizhuanhuanchengtongyideneima hanzishurufangandazhikefenweiyixia4zhongleixing

  (1) yinmaruquanpinshuangpinweiruanpinyindeng

  (2) xingmaruwubizixingzhengmabiaoxingmadeng

  (3) yinxingmaruzhinengABCziranmadeng

  (4) shuzimaruquweimadianbaomadeng

  4) hanzizixingma(shuchuma)

  hanzizixingma(shuchuma)yongyuhanzidexianshihedayinshihanzizixingdeshuzihuaxinxi hanzideneimashiyongshuzidaimalaibiaoshihanzidanshiweilezaishuchushirangrenmenkandaohanzijiubixushuchuhanzidezixingzaihanzixitongzhongyibancaiyongdianzhenlaibiaoshizixing 16 *16hanzidianzhenshiyi 16 * 16dianzhenzixingdeziyao使shiyong32gezijie(16 * 16/8= 32)cunchu24 * 24dianzhenzixingdeziyao使shiyong72gezijie(24 * 24/8=72)cunchu

  yibanlaishuobiaoxianhanzishi使shiyongdedianzhenyuedazehanzizixingdezhiliangyeyuehaodangranmeigehanzidianzhensuoxudecunchuliangyeyueda

  5) hanzidizhima

  hanzidizhimashizhihanziku(zhelizhuyaozhizhengzixingdedianzhenshizimoku)zhongcunchuhanzizixingxinxideluojidizhizaihanzikuzhongzixingxinxidoushianyidingshunxu(daduoshuanbiaozhunhanzijiaohuanmazhonghanzidepailieshunxu)lianxucunfangzaicunchujiezhishangdesuoyihanzidizhimayedaduoshilianxuyouxudeerqieyuhanzineimajianyouzhejiandandeduiyingguanxiyijianhuahanzineimadaohanzidizhimadezhuanhuan

  

  yixiashiyinyongpianduan

  */

  <!--[if !supportEmptyParas]--> <!--[endif]-->

  #include "stdafx.h"

  #include "HZEncode.h"

  <!--[if !supportEmptyParas]--> <!--[endif]-->

  #ifdef _DEBUG

  #define new DEBUG_NEW

  #undef THIS_FILE

  static char THIS_FILE[] = __FILE__;

  #endif

  #define UNICODE

  #define _UNICODE

  /////////////////////////////////////////////////////////////////////////////

  // The one and only application object

  <!--[if !supportEmptyParas]--> <!--[endif]-->

  CWinApp theApp;

  <!--[if !supportEmptyParas]--> <!--[endif]-->

  using namespace std;

  unsigned short* ptr;

  char* pszHZ = "a";

  byte BT[] = {0xc4,0xe3,0xBA,0xC3};//nihaodejineima

  int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])

  {

   int nRetCode = 0;

  <!--[if !supportEmptyParas]--> <!--[endif]-->

   // initialize MFC and print and error on failure

   if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))

   {

   // TODO: change error code to suit your needs

   cerr << _T("Fatal Error: MFC initialization failed") << endl;

   nRetCode = 1;

   }

   else

   {

   for (int i = 16;i <= 55; i++)

   {

   byte Temp[3];

   Temp[2] = 0;

   Temp[0] = i + 0xA0;

   for (int j = 1;j < 94;j++)

   {

  

   Temp[1] = j + 0xA0;

   cout << (LPCTSTR) Temp;

  

   }

   cout << endl;

   }

  <!--[if !supportEmptyParas]--> <!--[endif]-->

   }

  <!--[if !supportEmptyParas]--> <!--[endif]-->

   system("pause");

   return nRetCode;

  }

  <!--[if !supportEmptyParas]--> <!--[endif]-->

  

  <!--[if !supportEmptyParas]--> <!--[endif]-->原文】【拼音
 
 
 
 
上一篇《C++中的虚函数(virtual function)(1)》
下一篇《C语言实现MATLAB6.5中M文件的方法》
 
 
 
 
 
 
日版宠物情人插曲《Winding Road》歌词

日版宠物情人2017的插曲,很带节奏感,日语的,女生唱的。 最后听见是在第8集的时候女主手割伤了,然后男主用嘴帮她吸了一下,插曲就出来了。 歌手:Def...

兄弟共妻,我成了他们夜里的美食

老钟家的两个儿子很特别,就是跟其他的人不太一样,魔一般的执着。兄弟俩都到了要结婚的年龄了,不管自家老爹怎么磨破嘴皮子,兄弟俩说不娶就不娶,老父母为兄弟两操碎了心...

如何磨出破洞牛仔裤?牛仔裤怎么剪破洞?

把牛仔裤磨出有线的破洞 1、具体工具就是磨脚石,下面垫一个硬物,然后用磨脚石一直磨一直磨,到把那块磨薄了,用手撕开就好了。出来的洞啊很自然的。需要猫须的话调几...

我就是扫描下图得到了敬业福和爱国福

先来看下敬业福和爱国福 今年春节,支付宝再次推出了“五福红包”活动,表示要“把欠大家的敬业福都还给大家”。 今天该活动正式启动,和去年一样,需要收集“五福”...

冰箱异味产生的原因和臭味去除的方法

有时候我们打开冰箱就会闻到一股异味,冰箱里的这种异味是因为一些物质发出的气味的混合体,闻起来让人恶心。 产生这些异味的主要原因有以下几点。 1、很多人有这种习...

 
 
  // HZEncode.cpp : Defines the entry point for the console application.   //   /*   参考文献:   汉字的编码和表示   1)汉字交换码(国标码) 汉字交换码(国标码)主要用于汉字信息交换。   国标码:以国家标准局1980年颁布的《信息交换用汉字编码字符集"基本集》(代号为GB2312 80)规定的汉字交换码作为国家标准汉字编码。 GB2312 80中共有7445个字符符号: 汉字符号6763个 一级汉字3755个(按汉语拼音字母顺序排列) 二级汉字3008个(按部首笔划顺序排列) 非汉字符号682个 GB2312 80规定,所有的国标码汉字及符号组成一个94 94的方阵。在此方阵中,每一行称为一个"区",每一列称为一个"位"。这个方阵实际上组成一个有94个区(编号由01到94),每个区有94个位(编号由01到94)的汉字字符集。 一个汉字所在的区号和位号的组合就构成了该汉字的"区位码"。其中,高两位为区号,低两位为位号。这样区位码可以唯一地确定某一汉字或字符;反之,任何一个汉字或符号都对应一个唯一的区位码,没有重码。   区位码分布情况如下:   区 号 内 容 1区 键盘上没有的各种符号 2区 各种序号 3区 键盘上的各种符号(按中文方式给出) 4 -5区 日文字母 6区 希腊字母 7区 俄文字母 8区 标识拼音声调的母音及拼音字母名称 9区 制表符号 10- 15区 未用 16-55区 一级汉字(按拼音字母顺序排列) 56- 87区 二级汉字(按部首笔划顺序排列) 88- 94区 自定义汉字   由上可以看出,所有汉字与符号的94个区,可以分为四个组:   ①1 -15区:为图形符号区。其中1 9区为标准符号区;10 15区为自定义符号区。   ②16 -55区:为一级汉字区,包含3755个汉字。这些区中的汉字按汉语拼音顺序排序,同音字按笔画顺序列出。   ③56 -87区:为二级汉字区,包含3008个汉字。这些区中的汉字是按部首笔划顺序排序的。   ④88 -94区:为自定义汉字区。   国标码规定,每个汉字(包括非汉字的一些符号)由2字节代码表示。每个字节的最高位为0,只使用低7位,而低7位的编码中又有34个适用于控制用的,这样每个字节只有27 - 34 = 94个编码用于汉字。2个字节就有94 94=8836个汉字编码。在表示一个汉字的2个字节中,高字节对应编码表中的行号,称为区号;低字节对应编码表中的列号,称为位号。   汉字国标码的范围用二进制表示是: 00100001 00100001 01111110 01111110 (1+32)10 (1+32)10 (94+32)10 (94+32)10 7 位ASCII码是128个字符组成的字符集。其中编码值0 31(00000000 00011111)不对应任何印刷字符,通常称为控制符,用于计算机通信中的通信控制或对计算机设备的功能控制。编码值32(00100000)是空格字符SP。编码值127(1111111)是删除字符DEL。   汉字国标码的起始二进制位置选择00100001即(33)10是为了跳过ASCII码的32个控制字符和空格字符。所以,汉字国标码的高位和低位分别比对应的区位码大(32)10或(00100000)2或(20)H,即: 国标码高位 = 区码 + 20H (H表示十六进制) 国标码低位 = 位码 + 20H   2) 汉字机内码(内码)(汉字存储码)   汉字机内码(内码)(汉字存储码)的作用是统一了各种不同的汉字输入码在计算机内部的表示。 为了将汉字的各种输入码在计算机内部统一起来,就有了专用于计算机内部存储汉字使用的汉字机内码,用以将输入时使用的多种汉字输入码统一转换成汉字机内码进行存储,以方便机内的汉字处理 汉字机内码是在计算机内部存储、处理的代码。计算机既要处理汉字,又要处理英文。因此计算机必须能区别汉字字符和英文字符。英文字符的的机内码是最高为为0的8位ASCII码。为了不与7位ASCII码发生冲突,把国标码每个字节的最高位由0改为1,其余位不变的编码作为汉字字符的机内码。   汉字机内码的范围用二进制表示是: 10100001 10100001 11111110 11111110 机内码的高位和低位比对应的国标码的高位和低位大(128)10或(10000000)2或(80)H 即: 机内码高位 = 国标码高位 + 80H 机内码低位 = 国标码低位 + 80H 又因为: 国标码高位 = 区码 + 20H 国标码低位 = 位码 + 20H 所以: 机内码高位 = 区码 + A0H 机内码低位 = 位码 + A0H 也就是说,机内码高位和机内码低位分别比对应的区码和位码大(160)10或(10100000)2或 (A0)H 例如:汉字"啊"的区位码为"1601",其中区码为(16)10或(10)H,位码为(01)10或(01)H。 则: 机内码高位 = 10H + A0H = B0H 机内码低位 = 01H + A0H = A1H 所以: 机内码= B0A1H 以下是引用片段: <!--[if !supportEmptyParas]--> <!--[endif]-->   3) 汉字输入码(外码)   汉字输入码(外码)是为了通过键盘字符把汉字输入计算机而设计的一种编码。 英文输入时,相输入什么字符便按什么键,输入码和机内码一致。汉字输入时,可能要按几个键才能输入一个汉字。 汉字输入方案有成百上千个,但是这千差万别的外码输入进计算机后都会转换成统一的内码。 汉字输入方案大致可分为以下4种类型:   (1) 音码:如全拼、双拼、微软拼音等   (2) 形码:如五笔字型、郑码、表形码等   (3) 音形码:如智能ABC、自然码等   (4) 数字码:如区位码、电报码等   4) 汉字字形码(输出码)   汉字字形码(输出码)用于汉字的显示和打印,是汉字字形的数字化信息。 汉字的内码是用数字代码来表示汉字,但是为了在输出时让人们看到汉字,就必须输出汉字的字形。在汉字系统中,一般采用点阵来表示字形。 16 *16汉字点阵示意 16 * 16点阵字形的字要使用32个字节(16 * 16/8= 32)存储,24 * 24点阵字形的字要使用72个字节(24 * 24/8=72)存储。   一般来说,表现汉字时使用的点阵越大,则汉字字形的质量也越好,当然每个汉字点阵所需的存储量也越大。   5) 汉字地址码   汉字地址码是指汉字库(这里主要指整字形的点阵式字模库)中存储汉字字形信息的逻辑地址。在汉字库中,字形信息都是按一定顺序(大多数按标准汉字交换码中汉字的排列顺序)连续存放在存储介质上的,所以汉字地址码也大多是连续有序的,而且与汉字内码间有着简单的对应关系,以简化汉字内码到汉字地址码的转换。 以下是引用片段: */ <!--[if !supportEmptyParas]--> <!--[endif]--> #include "stdafx.h" #include "HZEncode.h" <!--[if !supportEmptyParas]--> <!--[endif]--> #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #define UNICODE #define _UNICODE ///////////////////////////////////////////////////////////////////////////// // The one and only application object <!--[if !supportEmptyParas]--> <!--[endif]--> CWinApp theApp; <!--[if !supportEmptyParas]--> <!--[endif]--> using namespace std; unsigned short* ptr; char* pszHZ = "啊"; byte BT[] = {0xc4,0xe3,0xBA,0xC3};//“你好”的机内码 int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { int nRetCode = 0; <!--[if !supportEmptyParas]--> <!--[endif]--> // initialize MFC and print and error on failure if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { // TODO: change error code to suit your needs cerr << _T("Fatal Error: MFC initialization failed") << endl; nRetCode = 1; } else { for (int i = 16;i <= 55; i++) { byte Temp[3]; Temp[2] = 0; Temp[0] = i + 0xA0; for (int j = 1;j < 94;j++) { Temp[1] = j + 0xA0; cout << (LPCTSTR) Temp; } cout << endl; } <!--[if !supportEmptyParas]--> <!--[endif]--> } <!--[if !supportEmptyParas]--> <!--[endif]--> system("pause"); return nRetCode; } <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportEmptyParas]--> <!--[endif]-->
󰈣󰈤
  免责声明:本文仅代表作者个人观点,与王朝网络无关。王朝网络登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
时尚秀气模特裴裴(8)
时尚秀气模特裴裴(7)
时尚秀气模特裴裴(6)
时尚秀气模特裴裴(5)
白墙黑瓦
广州东郊[原创]
八美至丹巴的东谷天然盆景
不一样的
 
>>返回首页<<
 
 
 为你推荐
 
 
 
 转载本文
 UBB代码 HTML代码
复制到剪贴板...
 
 热帖排行
 
 
 
 
©2005- 王朝网络 版权所有