>413
ざっとこんな感じ。intに格納されているデータがバイト単位で読めたりする。今、コード上で共用体のメンバu32に代入しているけど、これを動的に設定すると、らしくなる。

#include <stdio.h>

/* 型を示すID */
typedef enum {
E_U8 , E_U16, E_U32
} E_TYPE_DATA;

/* データ本体を示す共用体 */
typedef union {
unsigned char u8[4]; /* unsigned 8bit */
unsigned short u16[2]; /* unsigned 16bit */
unsigned u32; /* unsigned 32bit */
} T_DATA_BODY;

/* データ構造体 */
typedef struct {
E_TYPE_DATA type; /* データ型ID */
T_DATA_BODY data; /* データボディ */
} T_DATA;

int main(int argc, char** argv)
{
T_DATA tData;
tData.data.u32 = 0x12345678;
printf("%x\n", tData.data.u32);
printf("%hhx, %hhx, %hhx, %hhx\n"
, tData.data.u8[0], tData.data.u8[1], tData.data.u8[2], tData.data.u8[3]);
return 0;
}