Ich versuche CRC16 aus Zeichenfolge in Android-Anwendung mit folgendem CodeWie bekomme ich gute CRC16 von String in Java?
static int crc16(final byte[] buffer) {
int crc = 0xFFFF;
for (int j = 0; j < buffer.length ; j++) {
crc = ((crc >>> 8) | (crc << 8))& 0xffff;
crc ^= (buffer[j] & 0xff);//byte to int, trunc sign
crc ^= ((crc & 0xff) >> 4);
crc ^= (crc << 12) & 0xffff;
crc ^= ((crc & 0xFF) << 5) & 0xffff;
}
crc &= 0xffff;
return crc;
}
und ich habe einige Daten zu erhalten, das Ergebnis als Tabelle unten
wenn ich A
zu vorbei bin, um zu überprüfen diese Funktion bekomme ich B915
was ist schlecht CRC und das gleiche für alle. Warum kann ich kein gutes CRC wie in der Tabelle erwähnt bekommen. Bitte korrigieren Sie mich wo ich falsch mache? Vielen Dank!
Vielen Dank! Es ist gelöst. –
Ihr Willkommen! :) – user2004685
Nein. Dies ist nur ein Bandaid. Der CCIT CRC-16 hat einen Anfangswert von 0xffff. Der einzige andere gemeinsame Anfangswert ist Null. Suchen Sie den Fehler in Ihrem Code und beheben Sie ihn. Es gibt viele Arbeitsbeispiele, einschließlich eines tabellengesteuerten Algorithmus, der achtmal so schnell ist, – EJP