Thao tác này sẽ trích xuất thành phần màu đỏ từ số mà (người sẽ giả định) đại diện cho một màu trong aRGB.
Đầu tiên:
(rgb & 0x00ff0000)
... sử dụng Bitwise và về không tất cả các bit của rgb
trừ những từ byte chứa đỏ phần (thứ ba byte quan trọng nhất). Sau đó, giá trị đó được dịch chuyển sang phải 16 vị trí (bằng cách sử dụng >> 16
), do đó nó chiếm phần lớn byte phải, sau đó giá trị đó được gán cho red
.
Ví dụ, giả sử bạn đã có một int
đại diện vivid cyan:
int color = 0x0012faff;
Sau đó, điều này:
int redOnly = color & 0x00ff0000;
System.out.println(redOnly >> 16);
Prints:
18
... đó là giá trị thập phân cho hex 0x12
(từ màu đỏ vị trí trong color
ở trên).
Tương tự, bạn có thể nhận được các giá trị của xanh và thành phần màu xanh với những điều sau:
int green = (color & 0x0000ff00) >> 8; // 250 = 0xfa
int blue = (color & 0x000000ff); // 255 = 0xff
Nguồn
2011-12-27 00:06:10
Tôi thích 'int red = ((rgb >> 16) & 0xff);'. –