用.NET获取汉字的区位码

用.NET获取汉字的区位码首先复习一下计算机基础知识: 

计算机中最底层的数据都是用二进制及0和1来表示的。每个0或1称作1位,第8位二进制数叫做1个字节,它可以表示ASCII码中的一个字符。中文计算机中用两个字节即16位二进制来表示一个汉字。而在Unicode编码中所有的符号(包括汉字,英文,标题及其它众多符号)都是为两字节(16)位来表示。 

在System.Text命名空间中包含众多编码的类,可供进行操作及转换,下面用两个实例来进行区 

using System;
using System.Text;
class CodingChange
{
    public string CharacterToCoding(string character)
    {
        string coding = "";
        for (int i = 0; i < character.Length; i++)
        {
            byte[] bytes = System.Text.Encoding.Unicode.GetBytes(character.Substring(i, 1)); //取出二进制编码内容
            string lowCode = System.Convert.ToString(bytes[0], 16); //取出低字节编码内容(两位16进制)
            if (lowCode.Length == 1)
                lowCode = "0" + lowCode;
            string hightCode = System.Convert.ToString(bytes[1], 16);//取出高字节编码内容(两位16进制)
            if (hightCode.Length == 1)
                hightCode = "0" + hightCode;
            coding += (lowCode + hightCode);//加入到字符串中,
        }
        return coding;
    }
    public string CodingToCharacter(string coding)
    {
        string characters = "";
        if (coding.Length % 4 != 0)//编码为16进制,必须为4的倍数。
        {
            throw new System.Exception("编码格式不正确");
        }
        for (int i = 0; i < coding.Length; i += 4) //每四位为一个汉字
        {
            byte[] bytes = new byte[2];
            string lowCode = coding.Substring(i, 2); //取出低字节,并以16进制进制转换
            bytes[0] = System.Convert.ToByte(lowCode, 16);
            string highCode = coding.Substring(i + 2, 2); //取出高字节,并以16进制进行转换
            bytes[1] = System.Convert.ToByte(highCode, 16);
            string character = System.Text.Encoding.Unicode.GetString(bytes);
            characters += character;
        }
        return characters;
    }
    public static void Main()
    {
        CodingChange code = new CodingChange();
        string coding = code.CharacterToCoding("我们的大中国,是好在的一个家.");
        Console.WriteLine(coding);
        Console.WriteLine(code.CodingToCharacter(coding));
    }
}
最后输出的结果是:  

C:/>test 
1162ec4e847627592d4efd560cff2f667d5928578476004e2a4eb65b2e00 
我们的大中国,是好在的一个家.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值