/// <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");
            }
        }
예제 #4
0
        /// <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)));
 }