対象環境を限定できる場合、バイト配列にリトルエンディアンで32bit値を書き込むときに、私は以下のように書いていました。 char buf[32]; *(int *)&buf[6] = 0x12345678; 非常に分かりにくいとご指摘を受けて色々と変形しましたが、どれもしっくり来ません。 ポインタ演算 *(int *)(buf + 6) = 0x12345678; 記述を分割 int *p = (int *)&buf[6]; *p = 0x12345678; アドレスをポインタで表現しているため、キャストに惑わされてメモリ操作のイメージが湧きにくいのではないかと思いました。そこで敢えて即値だけを使い、理屈抜きで基本構文として覚えてもらおうという趣旨のスライドを作ってみました。 アセンブリ言語 まずアセンブリ言語でメモリに書き込むコードを提示します。 MOV BYTE PTR[0x0000