在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在串口通讯过程中,经常要用到 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 * 2, 2), 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 * 2, 2), 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 }
|
请发表评论