CRC16 von C auf Java

#2900420
Lesenswert?

Hey liebe Leute!
Mein erster Beitrag hier bei euch. Tolles Forum, tolle Seite!

Ich bin dabei ein CRC 16 Algorithmus auf Java zu portieren, um dort 
Pakete auswerden zu können. Leider will das nur nicht so wie ich und ich 
finde den Fehler einfach nicht.

Mein C Code sieht so aus:
1
uint16_t
2
crc16 (const uint8_t * buffer, uint32_t size)
3
{
4
  uint16_t crc = 0xFFFF;
5

6
  if (buffer && size)
7
    while (size--)
8
    {
9
      crc = (crc >> 8) | (crc << 8);
10
      crc ^= *buffer++;
11
      crc ^= ((unsigned char) crc) >> 4;
12
      crc ^= crc << 12;
13
      crc ^= (crc & 0xFF) << 5;
14
    }
15

16
  return crc;
17
}

Der Java-Port dazu:
1
private static short crc16(final byte[] data) {
2
    
3
      int crc = 0xFFFF;
4
      
5
      for (int i = 0; i < data.length; i++) {
6
          crc = (crc >> 8) | (crc << 8);
7
          crc ^= data[i];
8
          crc ^= crc >> 4;
9
          crc ^= crc << 12;
10
          crc ^= (crc & 0xFF) << 5;
11
      }
12
      
13
      return (short) (crc & 0xffff);
14
      
15
}

Kann mir einer von euch sagen, wo hier mein Fehler liegt? Finde Ihn 
einfach nicht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren