du kannst daraus eine union machen:
Code:
union Pdata
{
  struct _bf {
    unsigned long int id:30;
    unsigned char status:4;
    signed long int position:28;
  } bf;
  unsigned char c[8];
} pos;
und dann über das array c auf die bytes einzeln zugreifen... das wär der IMHO elegantere weg. über den pointer geht's natürlich auch:
Code:
int i;
unsigned char *p;

for(p=(unsigned char*)&pos, i = 0; i < sizeof(pos); i++, p++)
  printf("%02x ", *p);
cm.