java的crc8校验,按指定多项式,求助
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java的crc8校验,按指定多项式,求助相关的知识,希望对你有一定的参考价值。
参考技术A 以下是我的分析,不知是否正确,你参考下1、首先来看你打java代码:crc=(byte)((crc>>1)^0x8c);和 crc=(byte)(crc>>1); 导致这个问题是因为byte的最高位符号位,转换的时候就出错了2、示例代码:package com.test;public class test public static void main(String[] args) byte[] ptr = 1, 1, 1, 1, 1, 1 ;byte res = getCrc(ptr);System.out.println();System.out.println((byte)( (1 >> 1) ^ 0x8c ) + ":" +( (1 >> 1) ^ 0x8c ) );public static byte getCrc(byte[] ptr) int crc = 0;for (int i = 0; i > 1) ^ 0x8c; else crc = crc >> 1;return (byte) crc;CRC校验
假设要发送的数据是:0b10110010,其对应的多项式称为g(x);指定生成多项式为:CRC-4为h(x)=x4+x3+x2+x+1(即0b11111),数据和生成多项式二进制相除g(x)/h(x)(异或)生成的校验字段为:0b0100,那么发送的码字为0b101100100100,将其发送出去。
接收端接收到码字后,将码字与生成多项式二进制相除(异或),如果能整除则说明接收的数据是正确的,若不能整除说明数据传输过程中出现了错误,接收的是错误的。
异或:
二进制相除:
参考:
http://www.cnblogs.com/94cool/p/3559585.html
http://www.360doc.com/content/12/0324/17/110467_197300430.shtml
以上是关于java的crc8校验,按指定多项式,求助的主要内容,如果未能解决你的问题,请参考以下文章