package com.hcs.lqjc.controller.dongdahengfeng.modbus.utils;
/** * @author lwt
* @date 2018-06-26
* * crc16校驗碼計算
* * (1).預置1個16位的暫存器為十六進製制ffff(即全為1),稱此暫存器為crc暫存器;
* (2).把第乙個8位二進位制資料(既通訊資訊幀的第乙個位元組)與16位的crc暫存器的低
* 8位相異或,把結果放於crc暫存器;
* (3).把crc暫存器的內容右移一位(朝低位)用0填補最高位,並檢查右移後的移出位;
* (4).如果移出位為0:重複第3步(再次右移一位);如果移出位為1:crc暫存器與多項式a001(1010 0000 0000 0001)進行異或;
* (5).重複步驟3和4,直到右移8次,這樣整個8位資料全部進行了處理;
* (6).重複步驟2到步驟5,進行通訊資訊幀下乙個位元組的處理;
* (7).將該通訊資訊幀所有位元組按上述步驟計算完成後,得到的16位crc暫存器的高、低
* 位元組進行交換;
* (8).最後得到的crc暫存器內容即為crc16碼。(注意得到的crc碼即為低前高後順序)
*/public class crc16
int num = len / 2;
byte para = new byte[num];
for (int i = 0; i < num; i++)
return getcrc(para);
}/**
* 計算crc16校驗碼
** @param bytes 位元組陣列
* @return 校驗碼
* @since 1.0
*/public static string getcrc(byte bytes) else }}
//結果轉換為16進製制
string result = integer.tohexstring(crc).touppercase();
if (result.length() != 4)
//交換高低位
return result.substring(2, 4) + result.substring(0, 2);
}public static void main(string args)
}
C XOR CRC16 校驗碼計算類
cyclic redundancy check迴圈冗餘檢驗,是基於資料計算一組效驗碼,用於核對資料傳輸過程中是否被更改或傳輸錯誤。1 迴圈校驗碼 crc碼 是資料通訊領域中最常用的一種差錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。2 生成crc碼的基本原理 任意乙個由二進位制位串組成的 ...
校驗碼 奇偶校驗碼
1.奇偶校驗碼 通過在編碼中增加一位校驗位來使編碼中1的個數為奇數或者偶數,校驗位可以在原編碼的前面或者後面加。通過加入校驗位後的1個數是奇數還是偶數,可分為兩種 奇校驗 1的個數為奇數 偶校驗 1的個數為偶數 下圖為奇校驗和偶校驗的設定方法。例如 m的ascii碼77,二進位制表示為0100110...
校驗碼 迴圈冗餘校驗碼
迴圈冗餘校驗碼,又稱crc碼。它利用生成多項式來為k個資料位產生r個校驗位來進行編碼。其編碼長度為k r。迴圈冗餘校驗碼由兩部分組成,左邊為資訊碼 資料 右邊為校驗碼,如下圖 若資訊碼佔k位,則校驗碼就佔n k位,其中,n為crc碼的字長,所以又稱為 n,k 碼。校驗碼位數越多,校驗能力越強。crc...