3 回答
![?](http://img1.sycdn.imooc.com/54584e2c00010a2c02200220-100-100.jpg)
TA贡献1934条经验 获得超2个赞
我会怎么做:
byte[] xor(byte[] a, byte[] b) {
if (a.length != b.length) throw new IllegalArgumentException();
byte[] c = new byte[a.length];
for (int i = 0; i < a.length; i++) {
c[i] = a[i] ^ b[i];
}
return c;
}
然后你可以测试一下:
byte[] b1 = ..., b2 = ... b3 = ..., b4 = ...;
byte[] b5 = xor(b1, xor(b2, xor(b3, b4)));
![?](http://img1.sycdn.imooc.com/54584f9d0001219b02200220-100-100.jpg)
TA贡献1804条经验 获得超8个赞
像这样对任意数量的数组的字节进行异或。
public static byte[] xor(byte[]... arrays) {
int len = 0;
for (byte[] array : arrays)
len = Math.max(len, array.length);
byte[] result = new byte[len];
for (int i = 0; i < len; i++) {
byte b = 0;
for (byte[] array : arrays)
b ^= i < array.length ? array[i] : 0;
result[i] = b;
}
return result;
}
注意:为避免混淆,我创建了一个新数组并返回该数组,而不是返回最长的字节 []。
添加回答
举报