FCS校驗類
阿新 • • 發佈:2018-12-26
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace FCS
{
public class FCSstr
{
public FCSstr() { } public string tobcc(string s) //幀校驗函式FCS { //獲取s對應的位元組陣列 byte[] b = Encoding.ASCII.GetBytes(s); // xorResult 存放校驗結果。注意:初值去首元素值! byte xorResult = b[0]; // 求xor校驗和。注意:XOR運算從第二元素開始 for (int i = 1; i < b.Length; i++) { //**進行異或運算,^=就是異或運算子,具體可查閱異或運算 //**異或運算:兩個二進位制數的每一位進行比較,如果相同則為0,不同則為1,如下面2個10進位制數37、 48的二進位制值異或結果為21 //** 37(10) 100101(2) //** 48(10) 110000(2) //** 21(10) 010101(2) //**這裡的意思是:如a^=b,就是a與b先進行異或比較,得出的結果賦值給a; xorResult ^= b[i]; } //**Convert.ToString(xorResult, 16):將當前值轉換為16進位制;ToUpper():結果大寫; //**這裡的意思是:將xorResult轉換成16進位制並大寫; //**(//**返回的結果為一個兩個ASCII碼的異或值) return Convert.ToString(xorResult, 16).ToUpper(); } public string tobccs(string ss) //幀校驗函式FCS後4位刪除,兩位校驗,兩個結束 { //獲取s對應的位元組陣列 byte[] bs = Encoding.ASCII.GetBytes(ss); // xorResult 存放校驗結果。注意:初值去首元素值! byte xorResults = bs[0]; // 求xor校驗和。注意:XOR運算從第二元素開始 for (int ia = 1; ia< bs.Length-4; ia++) { //**進行異或運算,^=就是異或運算子,具體可查閱異或運算 //**異或運算:兩個二進位制數的每一位進行比較,如果相同則為0,不同則為1,如下面2個10進位制數37、 48的二進位制值異或結果為21 //** 37(10) 100101(2) //** 48(10) 110000(2) //** 21(10) 010101(2) //**這裡的意思是:如a^=b,就是a與b先進行異或比較,得出的結果賦值給a; xorResults ^= bs[ia]; } //**Convert.ToString(xorResult, 16):將當前值轉換為16進位制;ToUpper():結果大寫; //**這裡的意思是:將xorResult轉換成16進位制並大寫; //**(//**返回的結果為一個兩個ASCII碼的異或值) return Convert.ToString(xorResults, 16).ToUpper(); } }
}