Скроме структур есть ещё объединения (union)
#pragma pack(push,1)
union{
int value;
struct {
unsigned char b1;
unsigned char b2;
unsigned char b3;
unsigned char b4;
}
};
#pragma pack(pop)
теперь к каждому байту можно обращаться по имени b1, b2, b3, b4
А в остальном, учите побитовые операции |, &, ^, а так же побитовый сдвиг <<, >>