7
votes

Java Créer un octet par Xor 2 octets

J'ai 2 matrices d'octets, chacun contenant 4 octets (byte1 [], byte2 []) et je veux xor eux pour créer un nouveau réseau de 4 octets (byte3 []) Comment ferais-je cela?

(ou même faire chaque octet à la fois, alors mettez-les dans le nouveau tableau)


2 commentaires

xoring ant peut être beaucoup plus rapide.


Pourquoi INT-XOR est plus rapide que Byte-Xor?


4 Réponses :


0
votes

Java a un opérateur XOR sous la forme de ^ . Juste Xor chaque octet avec chaque octet ultérieur et les mettent dans le nouveau tableau.


0 commentaires

6
votes

Vous pouvez utiliser l'opération XOR sur les octets. C'est le caret (^).

Exemple: P>

byte3[0] = (byte) (byte1[0] ^ byte2[0]);


2 commentaires

Merci, je ne pensais pas que cela fonctionnerait parce que je voulais que je fâche d'octet car il ne peut pas convertir Int en octet? oh bien ça devrait marcher j'espère


Cela ne compilera pas, bien qu'il soit facilement réparé.



13
votes

Vous devez les convertir en entiers (sans perte, élargissement primitif), le XOR, puis convertir le revenu résultant à un octet à l'aide d'un masque de bits. xxx

Exemple xxx

imprime la sortie suivante xxx


2 commentaires

salut, savez-vous pourquoi INT-XOR est plus rapide que Byte-Xor en Java


J'ai utilisé un examinateur de code d'octet pour examiner certains exemples de jouets et il est clair que, sous le capot, toutes les opérations utilisent int (E.g ixor ). De plus, lors de l'utilisation d'octets, il y a au moins une opération supplémentaire ( i2b ). Je ne suis pas clair combien différence réelle cela fait.



1
votes

Cela fonctionnera également pour une matrice d'octets de taille égale ou différente. xxx


0 commentaires