Android 依据字符串进行 CRC校验

2020-08-18  本文已影响0人  xiaovtoulu

/**

* 计算CRC16校验码

*

* @param bytes 需要计算的字节数组

*/publicstaticStringgetCRC(byte[]bytes){

intCRC=0x0000ffff;intPOLYNOMIAL=0x0000a001;inti,j;for(i=0;i<bytes.length;i++){CRC^=((int)bytes[i]&0x000000ff);for(j=0;j<8;j++){if((CRC&0x00000001)!=0){CRC>>=1;CRC^=POLYNOMIAL;}else{CRC>>=1;}}}returnInteger.toHexString(CRC);

}

注意: 直接以字符串输入'010600010100', 得到数值为'A118',发现并不是我想要的值。发现是ASCII校验结果,而我想要的是十六进制校验结果。所以需要转换,通过

byte[]bytes=newBigInteger("010600010100",16).toByteArray();

方法进行转换,然后进行CRC计算,即得到结果'D9 9A'。

上一篇 下一篇

猜你喜欢

热点阅读