转载请注明出自朱朱家园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