c#区位码与汉字相互转换

转载请注明出自朱朱家园http://blog.csdn.net/zhgl7688

区位码用四位数字表示,前两位称区码(01到94),后两位称位码(01到94)。

一个汉字的前一半是ASCII码为“160+区码”的字符,后一半是ASCII友为“160+位码”的字符。

汉字转区位码的过程:

首先得到汉字的字节数组,将字节数组的第一位和第二位分别减160,再连接成字符串就组成汉字区位码。

        /// <summary>
        /// 汉字转区位码方法
        /// </summary>
        /// <param name="chinese">汉字</param>
        /// <returns>区位码</returns>
        public string ChineseToCoding(string chinese)
        {
            string pCode = "";
            byte[] pArray = new byte[2];
            pArray = Encoding.Default.GetBytes(chinese);//得到汉字的字节数组
            int front = (short)(pArray[0] - '\0')-160;//将字节数组的第一位160
            int back = (short)(pArray[1] - '\0') - 160;//将字节数组的第二位160
            pCode = front.ToString() + back.ToString();//再连接成字符串就组成汉字区位码
            return pCode;
        }

区位码转汉字的过程:

首先将区位码分为两部分,前两位和后两位分别加160,再存入字节数组,最后转成汉字。

        /// <summary>
        /// 区位码转汉字方法
        /// </summary>
        /// <param name="coding">区位码</param>
        /// <returns>汉字</returns>
        public string CodingToChinese(string coding)
        {
            string chinese = "";

            byte[] pArray = new byte[2];
            string front = coding.Substring(0, 2);//区位码分为两部分
            string back = coding.Substring(2, 2);
            pArray[0] = (byte)(Convert.ToInt16(front) + 160);//前两位加160,存入字节数组
            pArray[1] = (byte)(Convert.ToInt16(back) + 160);//后两位加160,存入字节数组
            chinese = Encoding.Default.GetString(pArray);//由字节数组获得汉字
            return chinese;
       }

转载请注明出自朱朱家园http://blog.csdn.net/zhgl7688

时间: 2024-10-11 13:49:42

c#区位码与汉字相互转换的相关文章

java 16进制转与汉字相互转换

这个程序非常小,就是一个十六进制与汉字的相互转换,记录下来以后可能用得到 好,直接看代码: 1 public static void main(String[] args) { 2 String ss = "\u6570\u636e\u672a\u5f55\u5165"; 3 System.out.println(ss+"--"); 4 System.out.println(toUnicode("数据未录入")); 5 } 6 public st

汉字与区位码互转(Delphi代码,很容易理解)

汉=BABA(内码)=-A0A0=2626(区位码)字=D7D6(内码)=-A0A0=5554(区位码) //汉字转区位码function Str2GB(const S: AnsiString): string; const G = 160; // 160 = hA0 var n, m: word;begin n := Ord(S[1]); m := Ord(S[2]); Result := FormatFloat('00', n-G) + FormatFloat('00', m-G);end;

汉字转码程序

研究了一下汉字编码,包括汉字的区位码.机内码,挺好玩的,也是比较实用的,一般我们在涂卡是区位码,比如“马”的区位码是3477,然后我们就涂上3477,然后读卡机就能根据区位码识别汉字:而机内码是机器内部的编码,平常我们可能用的比较少,“马”的机内码是49901,读者可以试一下:打开记事本,然后按住“Alt”键,不要松开,然后依次按49901,松开“Alt”,“马”字就打出来了!哈哈,神奇吧!其他汉字或字母包括符号都能通过这种方式输入.以后大家输入自己的姓名的时候,完全可以“秀”一把,哈哈,不调用

取汉字拼音首字母的方法

近期在做一个按拼音首字母排序的ListView须要取汉字拼音首字母,Deomo下载地址:http://download.csdn.net/detail/u014649598/8494777,做了例如以下的方法: 代码例如以下: package com.android.pinyin; import java.io.UnsupportedEncodingException; import android.app.Activity; import android.os.Bundle; import a

在vc中实现获取汉字拼音的首字母

在vc中实现获取汉字拼音的首字母 void GetFirstLetter(CString strName, CString& strFirstLetter){    TBYTE ucHigh, ucLow;    int  nCode;    CString strRet;    strFirstLetter.Empty();    for (int i=0; i<strName.GetLength(); i++)    {        if ( (TBYTE)strName[i] <

Android -- 获取汉字的首字母

转换                                                                                             获取一个汉字的拼音首字母. GB码两个字节分别减去160,转换成10进制码组合就可以得到区位码例如汉字“你”的GB码是0xC4/0xE3,分别减去0xA0(160)就是0x24/0x430x24转成10进制就是36,0x43是67,那么它的区位码就是3667,在对照表中读音为‘n’. XML布局       

获取汉字的首字母(转)

转换                                                                                             获取一个汉字的拼音首字母. GB码两个字节分别减去160,转换成10进制码组合就可以得到区位码例如汉字“你”的GB码是0xC4/0xE3,分别减去0xA0(160)就是0x24/0x430x24转成10进制就是36,0x43是67,那么它的区位码就是3667,在对照表中读音为‘n’. XML布局       

转_汉字点阵字库原理

http://blog.csdn.net/zixu/archive/2008/01/15/2045164.aspx  原文连接 一.      汉字编码 1.        区位码 在国标GD2312—80中规定,所有的国标汉字及符号分配在一个94行.94列的方阵中,方阵的每一行称为一个“区”,编号为01区到94区,每一列称为一个“位”,编号为01位到94位,方阵中的每一个汉字和符号所在的区号和位号组合在一起形成的四个阿拉伯数字就是它们的“区位码”.区位码的前两位是它的区号,后两位是它的位号.用

java 取汉字首字母

有时候,可能会有一些类似这样的需求: 对于这样的效果,我们可以有类似这样的解决方案: package bys.utils; import java.io.UnsupportedEncodingException; /** * Created by toutou on 2014/2/21 */ public class ChineseCharacterHelper { static final int GB_SP_DIFF = 160; // 存放国标一级汉字不同读音的起始区位码 static f