Обычно (и я повторяю обычно, поскольку вы не указываете много в своем вопросе) цвет упаковывается в 4-байтовое целое число с компонентами RGBA.
Что вам нужно сделать, это маска и смещение, например:
int color = 0xRRGGBBAA;
u8 red = (color & 0xFF000000) >> 24;
u8 green = (color & 0x00FF0000) >> 16;
u8 blue = (color & 0x0000FF00) >> 8;
Это предполагает тип кодировки, который я указал, но может быть изменен в соответствии с вашим.
EDIT:
В вашем примере вы говорили о значении 0-255. Неясно, имеют ли компоненты размер 2 бита (4 значения интенсивности на компонент).
В этом случае подход остается прежним, но у вас будет всего несколько цветов:
u8 color = 86;
// so you take 2 bits and multiply by 64 to possibly have intensities: 0, 64, 128, 192
u8 red = ((color & 0xC0) >> 6) * 64;
u8 green = ((color & 0x30) >> 4) * 64;
u8 blue = ((color & 0x0C) >> 2) * 64;
EDIT2: Возможно, ваши цвета индексируются с помощью палитры, в этом случае у вас должен быть массив, в котором хранится сама палитра, а байт, который вы читаете из файла, должен быть индексом цвета, сохраненного где-то еще. .