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? P>
(ou même faire chaque octet à la fois, alors mettez-les dans le nouveau tableau) P>
4 Réponses :
Java a un opérateur XOR sous la forme de ^ code>. Juste Xor chaque octet avec chaque octet ultérieur et les mettent dans le nouveau tableau. P>
Vous pouvez utiliser l'opération XOR sur les octets. C'est le caret (^).
Exemple: P>
byte3[0] = (byte) (byte1[0] ^ byte2[0]);
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é.
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. Exemple p> imprime la sortie suivante p>
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 code>). De plus, lors de l'utilisation d'octets, il y a au moins une opération supplémentaire (
i2b code>). Je ne suis pas clair combien différence réelle cela fait.
Cela fonctionnera également pour une matrice d'octets de taille égale ou différente.
xoring ant peut être beaucoup plus rapide.
Pourquoi INT-XOR est plus rapide que Byte-Xor?