Java Iterate Bits in Byte Array

前端 未结 7 1576
夕颜
夕颜 2020-12-08 02:49

How can i iterate bits in a byte array?

7条回答
  •  孤城傲影
    2020-12-08 03:13

    public class ByteArrayBitIterable implements Iterable {
        private final byte[] array;
    
        public ByteArrayBitIterable(byte[] array) {
            this.array = array;
        }
    
        public Iterator iterator() {
            return new Iterator() {
                private int bitIndex = 0;
                private int arrayIndex = 0;
    
                public boolean hasNext() {
                    return (arrayIndex < array.length) && (bitIndex < 8);
                }
    
                public Boolean next() {
                    Boolean val = (array[arrayIndex] >> (7 - bitIndex) & 1) == 1;
                    bitIndex++;
                    if (bitIndex == 8) {
                        bitIndex = 0;
                        arrayIndex++;
                    }
                    return val;
                }
    
                public void remove() {
                    throw new UnsupportedOperationException();
                }
            };
        }
    
        public static void main(String[] a) {
            ByteArrayBitIterable test = new ByteArrayBitIterable(
                       new byte[]{(byte)0xAA, (byte)0xAA});
            for (boolean b : test)
                System.out.println(b);
        }
    }
    

提交回复
热议问题