サイズエンドモード(コモンunionテスト、ポインタテスト)

987 ワード

ストレージ・システムのサイズ・エンド・モード

  • サイズ端子
  • を区別する.
         0x01
    高位対データ低バイト------大端
         B3     B2    B1    B0
         01      00    00     00
    高位対データ高バイト------小端
         B3     B2    B1    B0
         00      00     00    01
    C 51単片機内部記憶は大端モードを採用し、ARMは小端モードを採用し、intelの大部分は小端モードを採用する
  • コードは、現在の環境のサイズエンドモード
  • を検出する.
    方法一:共用体テスト
    方法2:ポインタ方式テスト
    #include
    
    union test
    {
       int a;
       char b;
    };
    
    // 0, 1
    int is_little_endian(void)
    {
        union test u1;
        u1.a=1;
        return u1.b;
    }
    
    // 
    int is_little_endian2(void)
    {
        int a=1;
        char b=*((char *)(&a));
        return b;
    }
    int main()
    {
        int ret=-1;
        ret=is_little_endian();
        if(1==ret)
        {
            printf(" 
    "); } if(0==ret) { printf("
    "); } return 0; }

    テストを実現する鍵は、共用体の中のchar読み取り時に低位から読み取ることです
    1が下位に配置されている場合は、1、すなわち小端モードを返します.
  • 通信システムにおけるサイズエンドモード


  • 後で追加します...