我需要在 Java 中执行两个字节数组的按位或。我该怎么做?
byte a= new byte[256];
byte b= new byte[256];
byte c; /*it should contain information i.e bitwise OR of a and b */
我需要在 Java 中执行两个字节数组的按位或。我该怎么做?
byte a= new byte[256];
byte b= new byte[256];
byte c; /*it should contain information i.e bitwise OR of a and b */
这就像使用 | 运算符和循环:
public static byte[] byteOr(byte[] a, byte[] b) {
int len = Math.min(a.length, b.length);
byte[] result = new byte[len];
for (int i=0; i<len; ++i)
result[i] = (byte) (a[i] | b[i])
return result;
}
我认为你最好的选择是使用BitSet
. 该类已经有一个void or(BitSet bs)
方法可以使用。
byte[] a = new byte[256];
byte[] b = new byte[256];
byte[] c = new byte[256];
//fill BitSets with values from your byte-Arrays
BitSet bsa = BitSet.valueOf(a);
BitSet bsb = BitSet.valueOf(b);
//perform OR
bsa.or(bsb);
//write bsa to byte-Array c
c = bsa.toByteArray();