私のリトルエンディアンのz80風のプロセッサには、32ビットlong int msk = 0xFFFFFF00
(サブネットマスク)があります。今朝、この値をウォークスルーしてデータベースに保存する関数に渡し(unsigned char *)&msk
て
みたときに、エンディアンについて学びまし
た。void bar(unsigned char * c);
&msk
残念ながら、z80プロセッサのリトルエンディアンのため、データベースは値を「逆方向」に格納し、別の関数がバイトを読み戻すと0x00FFFFFF
、正しいサブネットマスクではないを認識します。
組合でこれを回避する簡単な方法はありますか?現在のLSBではなく、char[3]
のLSBにマップしたいと思います( LSBを取得します)。long int msk
char[0]
結論として、ビッグエンディアンの方が優れています。