2016-08-01 17 views
1

Ich möchte Crc16 auf ein Paket mit qchecksum statt boost crc nehmen, aber ich kann nicht die gleichen Ergebnisse erzielen. Wie kann ich CRC16 Prüfsumme wie Boost CRC in QT nehmen?Verwenden von QChecksum anstelle von Boost crc16

boost::crc<16, 0x1040, 0, 0, false, false>(packet, 4) 
+0

Können Sie uns die Linie zeigen, wo Sie versucht 'QChecksum' zu benutzen? –

+0

@ Torbjörn, angenommen, Paket ist gleich "0x00000000" dann Boost crc ist gleich Null, aber qt crc ist gleich 64734 – abdolahS

+0

Es gibt kein einziges 16-Bit-CRC-Polynom, und es gibt keine einzige Möglichkeit, eine zu verwenden Polynom, um entweder einen CRC zu berechnen. Warum gehen Sie davon aus, dass Boost und Qt dasselbe Polynom mit denselben Parametern verwenden? –

Antwort

3

Es gibt viele CRC-16 Polynome und Parametersätze. qchecksum ist nur eine Implementierung von einem von ihnen. Also nein, du kannst qchecksum nicht mit willkürlichen Boost-Prüfsummen vergleichen. Sie können jedoch Boost-Prüfsummenparameter anpassen, um qchecksum zu entsprechen, wenn dies eine Option ist.

Mit Blick auf qchecksum Quelle (und spielen mit Parametern) scheint es, dies zu sein:

boost::crc<16, 0x1021, 0xFFFF, 0xFFFF, true, true> 
Verwandte Themen