检测系统的大小端模式--利用union

1 大小端的定义

大端模式    字数据的高字节存储在低地址, 低字节存储在高地址

小端模式    字数据的高字节存储在高地址, 低字节存储在低地址

 

2 利用 union 判定

union check{

    int i;

    char ch;

}

在32位机中, int 4 bytes, char 1 byte

i = 1 时

大端模式

                  0x00 0x00 0x00 0x01

                   -----------> 高地址

小端模式

           0x00 0x00 0x00 0x01

           高地址<------------   

所以通过 ch 的值便可以判定当前的模式

代码如下

#include <stdio.h> int main( void ) { union check{ int i; char ch; }c; c.i = 1; if( 1 == c.ch ) printf("the system is little_endian./n"); else printf("the system is big_endian./n"); return 0; }    

 

你可能感兴趣的:(检测系统的大小端模式--利用union)