ちょっとわけあってデータベースみたいなプログラムを作っています。

それでファイルの読み書きの際に…

1バイト目:このチャンクの形式(0x01ならインデックスチャンク)
2バイト目〜5バイト目:1番目のインデックス(DWORD)
6バイト目〜9バイト目:2番目のインデックス(DWORD)
(以下略)

のようなデータ形式にしようと思いました。
で、データ領域は BYTE の配列っていうかメモリ領域にします。

BYTE* pIndex = (BYTE*)malloc(9999);

1バイト目はまぁいいでしょう。

pIndex[0] = 0x01;

でも2〜5バイト目のはどうするんだ?と考えてしまった。
要するにDWORD値をBYTEの配列に入れたいわけなのです。

なんというか単純に

DWORD dwData = 0x12345678;
*(DWORD*)(pIndex + 1) = dwData;

とやりたくなってしまうんですが、果たしてこれで良いのか。
多分上記のようにすればバッファには

0x78, 0x56, 0x34, 0x12

のように入ってくれるんだろうけども、これがどの処理系に持っていってもこう動くとは言えない気がかなりしまくります。
(ていうかそもそもBYTEとかDWORDがMFC以外でも使えるのかが疑問な気もしますが)

やっぱりクソ真面目に

pIndex[1] = (BYTE)(dwData & 0xff);
pIndex[2] = (BYTE)((dwData & 0xff00) >> 8);
pIndex[3] = (BYTE)((dwData & 0xff0000) >> 16);
pIndex[4] = (BYTE)((dwData & 0xff000000) >> 24);

とやるべきでしょうか。

うーーん。

とりあえずキャストだとなんだか不安なのでDWORDをBYTEに分解する方法で書くことにします…
でもなんか遅そうw