新聞中心
哪位大哥用java寫過CRC8校驗, 多項式X7 +X6 +X5 +X2 +1,求代碼?
代碼如下
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序定制開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了大竹免費建站歡迎大家使用!
public static byte CRC8(byte[] buffer)
? {
? ? ? byte crc = 0;
? ? ? for (int j = 0; j buffer.Length; j++)
? ? ? {
? ? ? ? ? crc ^= buffer[j];
? ? ? ? ? for (int i = 0; i 8; i++)
? ? ? ? ? {
? ? ? ? ? ? ? if ((crc 0x01) != 0)
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? crc = 1;
? ? ? ? ? ? ? ? ? crc ^= 0x8c;
? ? ? ? ? ? ? }
? ? ? ? ? ? ? else
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? crc = 1;
? ? ? ? ? ? ? }
? ? ? ? ? }
? ? ? }
? ? ? return crc;
? }
C語言CRC校驗碼轉(zhuǎn)成JAVA代碼
JAVA、C語法兼容度很高,CRC這種純計算代碼幾乎可以照搬,把char類型換一下就可以
JAVA怎么做CRC校驗的程序
實現(xiàn)方法:最簡單的校驗就是把原始數(shù)據(jù)和待比較數(shù)據(jù)直接進行比較,看是否完全一樣這種方法是最安全最準確的。同時也是效率最低的。
應用例子:龍珠cpu在線調(diào)試工具bbug.exe。它和龍珠cpu間通訊時,bbug發(fā)送一個字節(jié)cpu返回收到的字節(jié),bbug確認是剛才發(fā)送字節(jié)后才繼續(xù)發(fā)送下一個字節(jié)的。 實現(xiàn)方法:在數(shù)據(jù)存儲和傳輸中,字節(jié)中額外增加一個比特位,用來檢驗錯誤。校驗位可以通過數(shù)據(jù)位異或計算出來。
應用例子:單片機串口通訊有一模式就是8位數(shù)據(jù)通訊,另加第9位用于放校驗值。
bcc異或校驗法(block check character)
實現(xiàn)方法:很多基于串口的通訊都用這種既簡單又相當準確的方法。它就是把所有數(shù)據(jù)都和一個指定的初始值(通常是0)異或一次,最后的結(jié)果就是校驗值,通常把它附在通訊數(shù)據(jù)的最后一起發(fā)送出去。接收方收到數(shù)據(jù)后自己也計算一次異或和校驗值,如果和收到的校驗值一致就說明收到的數(shù)據(jù)是完整的。
校驗值計算的代碼類似于:
unsigned uCRC=0;//校驗初始值
for(int i=0;iDataLenth;i++) uCRC^=Data[i];
適用范圍:適用于大多數(shù)要求不高的數(shù)據(jù)通訊。
應用例子:ic卡接口通訊、很多單片機系統(tǒng)的串口通訊都使用。 (Cyclic Redundancy Check)
實現(xiàn)方法:這是利用除法及余數(shù)的原理來進行錯誤檢測的
將C語言版的CRC校驗改為java代碼寫
short CityComGetCRC(final byte[] data,short length){
short?crc=0,q;
short?c,i;
for(i=0;ilength;i++){
c=data[i];
q=(crc^c)0x0f;
crc=(crc4)^(q*0x1081);
q=(crc^(c4))0xf0;
crc=(crc4)^(q*0x1081);
}
return?crc;
}
網(wǎng)頁題目:crc代碼java代碼 crc校驗java
本文路徑:http://fisionsoft.com.cn/article/ddjsiee.html