プログラムでエンディアンをテストする最も一般的な方法は、次のように char* にキャストすることです。
short temp = 0x1234;
char* tempChar = (char*)&temp;
しかし、次のように short* にキャストすることで実行できますか?
unsigned char test[2] = {1,0};
if ( *(short *)test == 1)
//Little-Endian
else
//Big-Endian
「テスト」バッファーが (x86 プラットフォームで) リトル エンディアン規則 (右から左へ: 下位アドレスで「0」、上位アドレスで「1」) を使用してメモリに保存されるというのは正しいですか? 「一時」変数とは?
より一般的には、文字列がある場合: char tab[] = "abcdef"; それはどのようにメモリに保存されますか?「fedcba」のように逆になりますか?
どうも。あらかじめ:-)
PS。
プログラムのデータがシステム メモリ内でどのように見えるかを正確に確認する方法はありますか? 「実生活」でリトルエンディアンでのバイトスワップを見たいと思います。