gpt4 book ai didi

java - 如何异或 4 字节数组

转载 作者:行者123 更新时间:2023-11-29 07:26:33 28 4
gpt4 key购买 nike

我在尝试对 4 个不同的字节数组进行异或时遇到问题。根据我对 XOR 的理解,A XOR B = C; B XOR C = A.

public static byte[] test(byte[] b1, byte[] b2, byte[] b3, byte[] b4) {
if (b1.length > b2.length) {
byte[] tmp = b2;
b2 = b1;
b1 = tmp;
}
for (int i = 0; i < b1.length; i++) {
b2[i] ^= b1[i];
}

if (b2.length > b3.length) {
byte[] tmp = b3;
b3 = b2;
b2 = tmp;
}
for (int i = 0; i < b2.length; i++) {
b3[i] ^= b2[i];
}

if (b3.length > b4.length) {
byte[] tmp = b4;
b4 = b3;
b3 = tmp;
}
for (int i = 0; i < b3.length; i++) {
b4[i] ^= b3[i];
}

return b4;
}

我有 4 个字节数组:b1、b2、b3、b4。我用上面的方法给我一个字节数组,我们将调用 b5。

现在假设要获取 b1,我们将在上述方法中使用 b2、b3、b4、b5 作为参数。但是,这不会返回 b1。

所以我想知道是代码有问题还是因为我对异或操作理解不够。

最佳答案

这与 XOR 无关,但您在计算时会覆盖数组。调用方法后的内容和之前不一样了。此外,您的结果数组是输入数组之一。这会导致各种别名问题。

关于java - 如何异或 4 字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51572405/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com