-2

我需要在 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 */
4

2 回答 2

2

这就像使用 | 运算符和循环:

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;
}
于 2013-06-05T10:46:08.373 回答
2

我认为你最好的选择是使用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();
于 2013-06-05T07:53:29.033 回答