Android CRC-CCITT
Necesito una verificación CRC para una aplicación que estoy escribiendo, pero no puedo entender el código en línea y las calculadoras qué estoy haciendo mal. Puede que simplemente no lo entienda correctamente. Esto es lo que necesito
Utiliza CRC-CCITT con un valor inicial de 0xFFFF con orden de bits de entrada inversa. Por ejemplo, el mensaje Obtener tipo de dispositivo es: 0x01, 0x06, 0x01, 0x00, 0x0B, 0xD9. El CRC es 0xD90B.
Y este es el código que estoy usando:
public static int CRC16CCITT(byte[] bytes) {
int crc = 0xFFFF; // initial value
int polynomial = 0x1021; // 0001 0000 0010 0001 (0, 5, 12)
for (byte b : bytes) {
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;
//System.out.println("CRC16-CCITT = " + Integer.toHexString(crc));
return crc;
Lo escribo para un dispositivo Android, por lo que debe estar en Java.