Digamos que int
es de 16 bits y char
es de 8 bits.
Puede dividir el valor de 16 bits en sus dos bytes componentes con un código como este:
unsigned int val;
unsigned char lsb, msb;
lsb = val & 0x00FF;
msb = (val >> 8) & 0x00FF;
Acabo de arrancar esto de la parte superior de mi cabeza. Probablemente pueda reducir este código aún más con un estudio cuidadoso de lo que C garantiza sobre las conversiones de tipos y las peculiaridades específicas de su compilador. Para ser sincero, no he vuelto a comprobar las especificaciones de C, pero las dos máscaras ( x & 0x00FF
) podrían no ser necesarias, pero aun así, podría mantenerlas en el código para dejar clara la intención.