/// <summary>
/// 统计和
/// </summary>
/// <param name="v">被统计的变量</param>
/// <returns></returns>
public static int Sum(byte[] v)
{
int s = 0;
foreach (int var in v)
{
s += var;
}
return s;
}
/// <summary>
/// 统计和
/// </summary>
/// <param name="v">被统计的变量</param>
/// <returns></returns>
/// <param name="istart">开始位置</param>
public static int Sum(byte[] v, int istart)
{
int s = 0;
for (int i = istart; i < v.Length; i++)
{
s += v[i];
}
return s;
}
/// <summary>
/// 统计和
/// </summary>
/// <param name="v">被统计的变量</param>
/// <returns></returns>
/// <param name="istart">开始位置</param>
/// <param name="iend">结束位置</param>
public static int Sum(byte[] v, int istart, int iend)
{
int s = 0;
for (int i = istart; i < iend; i++)
{
s += v[i];
}
return s;
}
/// <summary>
/// 转换16进制字符串为int
/// </summary>
/// <param name="hexstring">字符串,低字节在前,高字节在后</param>
/// <returns></returns>
public static int Hex2Int(string hexstring)
{
byte[] b = HexStringToBinary(hexstring);
if (Reverse) { Array.Reverse(b); };
int r = b[0];
for (int i = 1; i < b.Length - 1; i++)
{
if (b[i] != 0)
{
r += Convert.ToInt32(Math.Pow(16, b[i]));
}
}
return r;
}
/// <summary>
/// 16进制字符串转换为二进制数组
/// </summary>
/// <param name="hexstring">字符串每个字节之间都应该有空格,大多数的串口通讯资料上面的16进制都是字节之间都是用空格来分割的。</param>
/// <returns>返回一个二进制字符串</returns>
public static byte[] HexStringToBinary(string hexstring)
{
string[] tmpary = hexstring.Trim().Split(' ');
byte[] buff = new byte[tmpary.Length];
for (int i = 0; i < buff.Length; i++)
{
buff[i] = Convert.ToByte(tmpary[i], 16);
}
return buff;
}
/// <summary>
/// 把二进制转换为十六进制字符串。
/// </summary>
/// <param name="buff">要被转换的二进制数组</param>
/// <returns>返回十六进制字符串,以空格隔开每个字节 。</returns>
public static string BinaryToHexString(byte[] buff)
{
string tmpstring = "";
foreach (byte var in buff)
{