C# 和校验

 1  /// <summary>
 2         /// 获取校验和
 3         /// </summary>
 4         /// <param name="Command"></param>
 5         /// <returns></returns>
 6         public static string ADD2(string Command)
 7         {
 8             byte[] data = Encoding.ASCII.GetBytes(Command);
 9             int sum = 0;
10             for (int i = 0; i < data.Length; i++)
11             {
12                 sum += data[i];
13             }
14             sum = sum % 256;
15 
16             sum = ~sum + 1;
17             byte a = (byte)sum;
18             string bin = Convert.ToString(a, 2);
19             string verify = Convert.ToInt32(bin, 2).ToString("X2");
20 
21             return verify;
22         }
23 
24         #region CS校验
25         /// <summary>
26         /// CS校验
27         /// </summary>
28         /// <param name="data">待校验Byte数组</param>
29         /// <returns>CS校验值</returns>
30         public static byte CS(byte[] data)
31         {
32             byte cs = 0;
33             for (int i = 0; i < data.Length; i++)
34             {
35                 cs = (byte)((cs + data[i]) % 256);
36             }
37             return cs;
38         }
39         #endregion
40 
41         #region BBC
42         /// <summary>
43         /// BBC校验
44         /// </summary>
45         /// <param name="data"></param>
46         /// <returns></returns>
47         public static String GetBCC(byte[] data)
48         {
49             String ret = "";
50             byte[] BCC = new byte[1];
51             for (int i = 0; i < data.Length; i++)
52             {
53                 BCC[0] = (byte)(BCC[0] ^ data[i]);
54             }
55             String hex = (BCC[0] & 0xFF).ToString("X");
56 
57             if (hex.Length == 1)
58             {
59                 hex = '0' + hex;
60             }
61             ret += hex.ToUpper();
62             return ret;
63         }
64         #endregion
65 
66 
67         #region LRC和校验
68         /// <summary>
69         /// LRC和校验
70         /// </summary>
71         /// <param name="data"></param>
72         /// <returns></returns>
73         public static byte LRC(byte[] data)
74         {
75             byte lrc = 0;
76             foreach (byte c in data)
77             {
78                 lrc += c;
79             }
80             return (byte)-lrc;
81         }
82         #endregion

猜你喜欢

转载自www.cnblogs.com/jianhongtang2016/p/11003866.html