13,100
社区成员
发帖
与我相关
我的任务
分享
public static void main(String[] args) {
byte[] in = {(byte)0x5A,(byte)0x01,(byte)0x1A};
byte[] out = new byte[2];
int stat = calc_Crc(3, in, out);
for (int i=0; i<out.length; i++) {
System.out.printf("%02X", new Object[]{new Byte(out[i])});
}
System.out.println();
}
static int calc_Crc(int len, byte[] in, byte[] out) {
int i, j, stat;
char crc;
stat = 0x31e3;
crc = 0x31E3;
for (j=0; j<len; j++) {
crc = (char)(crc^(in[j]<<8));
for (i=0; i<8; i++) {
if ((crc & 0x8000) > 0) crc = (char)((crc<<1)^0x1021);
else crc <<= 1;
}
}
out[0]=(byte)(crc>>8);
out[1]=(byte)crc;
if ((int)crc > 0) stat=1;
return stat;
}
int calc_Crc(int len, byte[] in, byte[] out) {
int i, j, stat;
char crc;
stat = 0x31e3;
crc = 0x31E3;
for (j=0; j<len; j++) {
crc = (char)(crc^(in[j]<<8));
for (i=0; i<8; i++) {
if ((crc & 0x8000) > 0) crc = (char)((crc<<1)^0x1021);
else crc <<= 1;
}
out[0]=(byte)(crc>>8);
out[1]=(byte)crc;
if (crc > 0) stat=1;
return stat;
}