当前位置:编程学习 > JAVA >>

jt809 java CRC1021 与C的不一致 C采用无符号整形

最近开发JT809协议 我用的java 在CRC验证上总是不行。


上面这个是CRC算法说明
下面为我java 代码
  public static int CRC_XModem(byte[] bytes){
         int crc = 0x00;          // initial value
         int polynomial = 0x1021; 
         for (int index = 0 ; index< bytes.length; index++) {
             byte b = bytes[index];
             for (int i = 0; i < 8; i++) {
                 boolean bit = ((b   >> (7-i) & 1) == 1);
                 boolean c15 = ((crc >> 15    & 1) == 1);
                 crc <<= 1;
                 if (c15 ^ bit) crc ^= polynomial;
              }
         }
         crc &= 0xffff;
         return crc; 
  }

public static void main(String[] args) {
byte[] b = new byte[] {0x2C,0x00,(byte) 0xFF,(byte) 0xFE,(byte) 0xFE,0x04,0x00,0x00,0x00,0x00 };
System.out.println(CRC_XModem(b)+"  "+0x5d3f);
}


java 的结果为53045  C的那边说的是十六进制0x5d3f,求哪位给点建议 java  crc --------------------编程问答-------------------- 这个x是你输入的那个参数? --------------------编程问答--------------------
引用 1 楼 AA5279AA 的回复:
这个x是你输入的那个参数?
哪里有X?
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,