标签:
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/article/details/43919603