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是你输入的那个参数? --------------------编程问答-------------------- 哪里有X?
补充:Java , Java EE