J'ai généré un entier CRC
sur un tableau d'octets et l'ai converti en un tableau de 4 octets. J'ai utilisé this classe pour CRC16 qui utilise générateur polynomial = 0x1021;
ce qui signifie 1 + x + x^5 + x^12 + x^16
J'envoie mon tableau d'octets et le CRC
sur UDP
au serveur. Du côté serveur, j'aime vérifier si le tableau d'octets a été correctement transmis. Si je comprends bien, je peux simplement diviser la matrice de données concaténée avec crc-array par le polynôme générateur. Ai-je bien compris? Et comment effectuer la division data+crc
par polynôme générateur en Java? J'ai vu des solutions qui génèrent juste le code crc à nouveau sur les données et comparer si les codes crc résultants sont les mêmes, mais ce n'est peut-être pas la raison pour laquelle les codes crc sont faits.Java effectuer un contrôle crc (diviser bytearray par bytearray)
Répondre
CRC est conçu pour que vous répétiez simplement le calcul CRC, mais avec les octets CRC ajoutés aux octets de données. De Wikipedia:
La validité d'un message reçu peut facilement être vérifié en effectuant le calcul ci-dessus, cette fois avec la valeur ajoutée au lieu de contrôle des zéros. Le reste doit être égal à zéro s'il n'y a pas d'erreurs détectables.
Cela ne fonctionne que si le CRC n'a pas de pré ou de post-traitement, ce que la plupart font. L'approche courante consiste à faire ce que vous feriez avec n'importe quel algorithme de vérification, qui le calcule uniquement sur le message reçu et le compare à la valeur de contrôle reçue. –
comme mon code fait une modification après le calcul de la somme de contrôle [crc & = 0xffff;] Je dois le faire comme vous l'avez dit mais j'accepte la réponse ci-dessus. – abimelex
@MarkAdler Si le CRC dispose d'un pré-traitement ou d'un post-traitement, en quoi cela peut-il être utile? Ma compréhension du point de ces types de contrôles (CRC, parité) est que vous le calculez simplement pour l'ensemble du message reçu (y compris les bits de contrôle) et assurez-vous que le résultat est 0. – ford
- 1. Java: créer un FileChannel soutenu par bytearray
- 2. Java ByteArray File Analysis
- 3. Java byteArray [] à docx
- 4. java Serialize Object à ByteArray
- 5. Envoi bytearray d'entiers par socket
- 6. Comment mettre à jour bytearray en C par JNI sans retourner bytearray
- 7. JNI byteArray passer l'aide
- 8. Java: convertir bytearray à chaîne et xml
- 9. Java - taille de la compression output-byteArray
- 10. scénario bytearray to bitmap
- 11. Java File et ByteArray ou InputStream
- 12. Conversion shortarray à byteArray et bytearray à shortarray
- 13. flex core ByteArray Image
- 14. Python: incrémentation bytearray efficace
- 15. Comment faire pour convertir String en byteArray et byteArray en String Array en java?
- 16. équivalent Java ByteArray en C ou C++
- 17. Enregistrer InputStream sur ByteArray
- 18. bytearray à la chaîne
- 19. Utiliser bytearray en Python
- 20. Enregistrer ByteArray généré par Pixel Bender
- 21. AS3 BitmapData à byteArray
- 22. AS3 - Compress ByteArray
- 23. AS3: ByteArray et BitmapData
- 24. AS3 - ByteArray to bitmap
- 25. Convertir l'image en ByteArray
- 26. AS3 ByteArray readShort
- 27. Superclasse d'octets et bytearray?
- 28. Flex: ByteArray to string
- 29. Flash Loader et ByteArray
- 30. Uploader bytearray via URLRequest
Recalculer le CRC et comparer est la chose la plus simple à faire. –
Incidemment, votre vérification n'est pas nécessaire car UDP garantit que l'octet [] sera identique à l'envoi car UDP effectue sa propre vérification en utilisant une somme de contrôle avant de remettre le datagramme. – markmnl
c'est plus pour des raisons pédagogiques alors un cas d'utilisation, mais serait bien si vous avez une référence à cette déclaration;) – abimelex