c# HexStringtoByte十六進制字符串轉字節與modusCRC校驗
public static byte[] hexStrTobyte(string hexString) { hexString = hexString.Replace(" ", ""); if ((hexString.Length % 2) != 0) hexString += " "; byte[] returnBytes = new byte[hexString.Length / 2]; for (int i = 0; i < returnBytes.Length; i++) returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2).Trim(), 16); return returnBytes; }
Int32 aa = Cal_CRC_Code(returnBytes,returnBytes.Length);
public Int32 Cal_CRC_Code(byte[] ucpdata, int len) { Int32 crc = 0xffff; byte temp; int n; int len2 = 0; while (len-->0) { crc = ucpdata[len2] ^ crc; for (n = 0; n < 8; n++) { Int32 TT; TT = crc & 1;//檢查最低位是否為1 crc = crc >> 1;//crc寄存器內容右移一位>>1 crc = crc & 0x7fff;//crc寄存器最高位補0,不改變其他位 if (TT == 1) {//檢查最低位是否為1 crc = crc ^ 0xa001;//與多項式1010 0000 0000 0001相異或 crc = crc & 0xffff;//crc碼 } } len2++; } // return SwapInt32(crc); return crc; }
string bb_string = aa.ToString("X2"); //整型轉十六進制