16进制和汉字格式的互换

View Code 
           /// <summary>
         /// 从汉字转换到16进制
         /// </summary>
         /// <param name="s"></param>
         /// <returns></returns>
         public static string GetHexFromChs(string s)
         {
             if ((s.Length % 2) != 0)
             {
                 s += " ";//空格
                 //throw new ArgumentException("s is not valid chinese string!");
             }
 
             System.Text.Encoding chs = System.Text.Encoding.GetEncoding("gb2312");
 
             byte[] bytes = chs.GetBytes(s);
 
             string str = "";
 
             for (int i = 0; i < bytes.Length; i++)
             {
                 str += string.Format("{0:X}", bytes[i]);
             }
 
             return str;
         }
         /// <summary>
         /// 从16进制转换成汉字
         /// </summary>
         /// <param name="hex"></param>
         /// <returns></returns>
         public static string GetChsFromHex(string hex)
         {
             if (hex == null)
                 throw new ArgumentNullException("hex");
             if (hex.Length % 2 != 0)
             {
                 hex += "20";//空格
                 //throw new ArgumentException("hex is not a valid number!", "hex");
             }
             // 需要将 hex 转换成 byte 数组。
             byte[] bytes = new byte[hex.Length / 2];
 
             for (int i = 0; i < bytes.Length; i++)
             {
                 try
                 {
                     // 每两个字符是一个 byte。
                     bytes[i] = byte.Parse(hex.Substring(i * 2, 2),
                         System.Globalization.NumberStyles.HexNumber);
                 }
                 catch
                 {
                     // Rethrow an exception with custom message.
                     throw new ArgumentException("hex is not a valid hex number!", "hex");
                 }
             }
 
             // 获得 GB2312,Chinese Simplified。
             System.Text.Encoding chs = System.Text.Encoding.GetEncoding("gb2312");
 
 
             return chs.GetString(bytes);
         }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值