• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#16进制与字符串、字节数组之间的转换

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在串口通讯过程中,经常要用到 16进制与字符串、字节数组之间的转换

 

 1         private static byte[] strToToHexByte(string hexString)
 2         {
 3             hexString = hexString.Replace(" """);
 4             if ((hexString.Length % 2) != 0)
 5                 hexString += " ";
 6             byte[] returnBytes = new byte[hexString.Length / 2];
 7             for (int i = 0; i < returnBytes.Length; i++)
 8                 returnBytes[i] = Convert.ToByte(hexString.Substring(i * 22), 16);
 9             return returnBytes;
10         }

 

 1         public static string byteToHexStr(byte[] bytes)
 2         {
 3             string returnStr = "";
 4             if (bytes != null)
 5             {
 6                 for (int i = 0; i < bytes.Length; i++)
 7                 {
 8                     returnStr += bytes[i].ToString("X2");
 9                 }
10             }
11             return returnStr;
12         }

 

 1         public static string UnHex(string hex, string charset)
 2         {
 3             if (hex == null)
 4                 throw new ArgumentNullException("hex");
 5             hex = hex.Replace(",""");
 6             hex = hex.Replace("/n""");
 7             hex = hex.Replace("//""");
 8             hex = hex.Replace(" """);
 9             if (hex.Length % 2 != 0)
10             {
11                 hex += "20";//空格
12             }
13             // 需要将 hex 转换成 byte 数组。 
14             byte[] bytes = new byte[hex.Length / 2];
15 
16             for (int i = 0; i < bytes.Length; i++)
17             {
18                 try
19                 {
20                     // 每两个字符是一个 byte。 
21                     bytes[i] = byte.Parse(hex.Substring(i * 22),
22                     System.Globalization.NumberStyles.HexNumber);
23                 }
24                 catch
25                 {
26                     // Rethrow an exception with custom message. 
27                     throw new ArgumentException("hex is not a valid hex number!""hex");
28                 }
29             }
30             System.Text.Encoding chs = System.Text.Encoding.GetEncoding(charset);
31             return chs.GetString(bytes);
32         }

 

从汉字转换到16进制

 1 public static string ToHex(string s, string charset, bool fenge)
 2         {
 3             if ((s.Length % 2) != 0)
 4             {
 5                 s += " ";//空格
 6                 //throw new ArgumentException("s is not valid chinese string!");
 7             }
 8             System.Text.Encoding chs = System.Text.Encoding.GetEncoding(charset);
 9             byte[] bytes = chs.GetBytes(s);
10             string str = "";
11             for (int i = 0; i < bytes.Length; i++)
12             {
13                 str += string.Format("{0:X}", bytes[i]);
14                 if (fenge && (i != bytes.Length - 1))
15                 {
16                     str += string.Format("{0}"",");
17                 }
18             }
19             return str.ToLower();
20         }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap