using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; namespace HighWayIot.Common { /// /// 工具类 /// public sealed class MsgUtil { private static readonly Lazy lazy = new Lazy(() => new MsgUtil()); public static MsgUtil Instance { get { return lazy.Value; } } private MsgUtil() { } public byte[] HexStrTorbytes(string strHex)//e.g. " 01 01" ---> { 0x01, 0x01} { strHex = strHex.Replace(" ", ""); if ((strHex.Length % 2) != 0) strHex += " "; byte[] returnBytes = new byte[strHex.Length / 2]; for (int i = 0; i < returnBytes.Length; i++) returnBytes[i] = Convert.ToByte(strHex.Substring(i * 2, 2), 16); return returnBytes; } /// /// 将字符串强制转换成int,转换失败则返回0 /// /// /// public int ParseToInt(string str) { int returnInt = 0; if (str == null || str.Trim().Length < 1) { return returnInt; } if (int.TryParse(str, out returnInt)) { return returnInt; } else { return 0; } } public byte[] HexToString(string Str) { byte[] str = new byte[Str.Length / 2]; for (int i = 0; i < str.Length; i++) { int temp = Convert.ToInt32(Str.Substring(i * 2, 2), 16); str[i] = (byte)temp; } return str; } /// /// byte数组转换成十六进制字符串 /// /// /// /// public string bytesToHexStr(byte[] bytes, int iLen) { StringBuilder sb = new StringBuilder(); if (bytes != null) { for (int i = 0; i < iLen; i++) { sb.Append(bytes[i].ToString("X2") + " "); } } return sb.ToString(); } /// /// 从十进制转换到十六进制 /// /// /// public string Ten2Hex(string ten) { ulong tenValue = Convert.ToUInt64(ten); ulong divValue, resValue; string hex = ""; do { //divValue = (ulong)Math.Floor(tenValue / 16); divValue = (ulong)Math.Floor((decimal)(tenValue / 16)); resValue = tenValue % 16; hex = tenValue2Char(resValue) + hex; tenValue = divValue; } while (tenValue >= 16); if (tenValue != 0) hex = tenValue2Char(tenValue) + hex; return hex; } public static string tenValue2Char(ulong ten) { switch (ten) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: return ten.ToString(); case 10: return "A"; case 11: return "B"; case 12: return "C"; case 13: return "D"; case 14: return "E"; case 15: return "F"; default: return ""; } } } }