私の質問は、UINT32値をUINT8配列[4] (C/C++)に変換するにはどうしたらよいかということです。できれば、エンディアンとは無関係な方法で変換してください。また、UINT8配列[4]からUINT32値を再構築して、元の状態に戻すにはどうすればよいのでしょうか。
ベストアンサー1
あなたは本当に何を意味しているのか言っていませんエンディアンに依存しない- バイト配列にはいくつかのエンディアン。とはいえ、1つ以下の項目がお客様の要件を満たす必要があります:
与えられUINT32 v
、UINT8 a[4]
:
「ホスト」エンディアン
(マシンのネイティブバイト順序を使用します):
UINT8 *vp = (UINT8 *)&v;
a[0] = vp[0];
a[1] = vp[1];
a[2] = vp[2];
a[3] = vp[3];
または:
memcpy(a, &v, sizeof(v));
または:
*(UINT32 *)a = v;
ビッグエンディアン
(別名「ネットワークオーダー」):
a[0] = v >> 24;
a[1] = v >> 16;
a[2] = v >> 8;
a[3] = v;
リトルエンディアン
a[0] = v;
a[1] = v >> 8;
a[2] = v >> 16;
a[3] = v >> 24;