As noted for instance here
"colors - How to convert 24 bit RGB to 8 bit RGB - Stack Overflow"[
^] the 8 bit per pixel format is usually used as palette index.
However, suppose you have the following formats:
bit number 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
b7 b6 b5 b4 b3 b2 b1 b0 g7 g6 g5 g4 g3 g2 g1 g0 r7 r6 r5 r4 r3 r2 r1 r0
bit number 7 6 5 4 3 2 1 0
B1 B0 G2 G1 G0 R2 R1 R0
Then
B1 = b7, B0 = b6
G2 = g7, G1 = g6, G0 = g5
R2 = r7, r1 = r6, r0 = r5
that is
b = (rgb >> 16) & 0xFF;
g = (rgb >> 8) & 0xFF;
r = rgb & 0xFF;
B = b >> 6;
G = g >> 5;
R = r >> 5;
RGB = (B << 6) | ( G << 3 ) | R;