/// <summary> /// 将字节数组转换成带16进制字符串 /// </summary> /// <param name="source"></param> /// <param name="start"></param> /// <param name="count"></param> /// <param name="segment"></param> /// <returns></returns> public static string GetHexStringFromByteArray(byte[] source, int start, int count, char segment = ' ') { byte[] b = ByteArrayLib.GetByteArray(source, start, count); StringBuilder sb = new StringBuilder(); if (b.Length > 0) { foreach (var item in b) { if (segment == 0) { sb.Append(string.Format("{0:X2}", item)); } else { sb.Append(string.Format("{0:X2}{1}", item, segment)); } } } if (segment != 0 && sb.Length > 1 && sb[sb.Length - 1] == segment) { sb.Remove(sb.Length - 1, 1); } return(sb.ToString()); }
/// <summary> /// 返回字节数组中某2个字节的指定位 /// </summary> /// <param name="b">字节数组</param> /// <param name="index">字节索引</param> /// <param name="offset">指定位(0-15)</param> /// <param name="reverse">字节顺序</param> /// <returns>布尔结果</returns> public static bool GetBitFrom2ByteArray(byte[] b, int index, int offset, bool reverse = false) { byte[] res = ByteArrayLib.GetByteArray(b, index, 2); if (res != null) { return(GetBitFrom2Byte(res, offset, reverse)); } else { throw new Exception("请检查字节索引"); } }
/// <summary> /// 将字节数组转换成西门子字符串 /// </summary> /// <param name="source"></param> /// <param name="start"></param> /// <param name="length"></param> /// <returns></returns> public static string GetSiemensStringFromByteArray(byte[] source, int start, int length) { byte[] b = ByteArrayLib.GetByteArray(source, start, length + 2); int valid = b[1]; if (valid > 0) { return(Encoding.GetEncoding("GBK").GetString(ByteArrayLib.GetByteArray(b, 2, valid))); } else { return("empty"); } }
/// <summary> /// 从字节数组中截取某个字节 /// </summary> /// <param name="source"></param> /// <param name="start"></param> /// <returns></returns> public static byte GetByteFromByteArray(byte[] source, int start) { byte[] b = ByteArrayLib.GetByteArray(source, start, 1); return(b == null ? (byte)0 : b[0]); }
/// <summary> /// 将字节数组转换成带编码格式字符串 /// </summary> /// <param name="source"></param> /// <param name="start"></param> /// <param name="count"></param> /// <returns></returns> public static string GetStringFromByteArray(byte[] source, int start, int count) { return(Encoding.ASCII.GetString(ByteArrayLib.GetByteArray(source, start, count))); }