2013-09-21 26 views
5

Vì vậy, nói rằng tôi có một mảng byte, và tôi có một chức năng kiểm tra xem chỉ số bit ít quan trọng nhất của mảng byte là 1 hay 0. Hàm trả về true nếu bit là 1 và false nếu bit là bit 0. Bit quan trọng nhất của mảng byte được định nghĩa là bit quan trọng cuối cùng trong chỉ số thứ 0 của mảng byte, và bit quan trọng nhất của mảng byte được định nghĩa là bit quan trọng nhất trong byte (byte array.length - 1) chỉ mục thứ của mảng byte.Kiểm tra các bit riêng lẻ trong một mảng byte trong Java?

Ví dụ,

byte[] myArray = new byte[2]; 
byte[0] = 0b01111111; 
byte[1] = 0b00001010; 

Calling:

myFunction(0) = true; 
myFunction(1) = true; 
myFunction(7) = false; 
myFunction(8) = false; 
myFunction(9) = true; 
myFunction(10) = false; 
myFunction(11) = true; 

cách tốt nhất để làm điều này là gì?

Cảm ơn!

+0

Bản sao có thể có của [Cách lấy giá trị của một bit tại một vị trí nhất định từ một byte?] (Https://stackoverflow.com/questions/9354860/how-to-get-the-value-of-a -bit-at-a-nhất định-vị trí-từ-một-byte) –

+0

@ MartinSchröder đầu tiên - necroposting, thứ hai - không, nó chắc chắn khác nhau, ở đây ông yêu cầu byte [] – Sarief

Trả lời

17

Bạn có thể sử dụng phương pháp này:

public boolean isSet(byte[] arr, int bit) { 
    int index = bit/8; // Get the index of the array for the byte with this bit 
    int bitPosition = bit % 8; // Position of this bit in a byte 

    return (arr[index] >> bitPosition & 1) == 1; 
} 

bit % 8 là vị trí bit so với một byte.
arr[index] >> bit % 8 di chuyển bit tại index tới vị trí bit 0.

+0

Gotcha, cảm ơn một bó! –

+0

@RyanYu Bạn được chào đón :) –

Các vấn đề liên quan