union和大小端
Little endian 和Big endian 是CPU 存放数据的两种不同顺序. 对于整型、长整型等数据类型. Big endian 认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据的高位字节到低位字节); 而Little endian 则相反, 它认为第一个字节是最低位字节(按照从低地址到高地址的顺序存放数据的低位字节到高位字节).
Address 0x0000 0x0001 0x0002 0x0003 big-endian 0x12 0x34 0xab 0xcd little-endian 0xcd 0xab 0x34 0x12
运用union的特性来判断CPU的大小端:
static union { char c[4]; unsigned long mylong; } endian_test = {{ 'L', '?', '?', 'B' } }; #define ENDIANNESS ((char)endian_test.mylong)
如果ENDIANNESS输出"L", 则为Little_endian; 如果输出"B", 则为Big_endian.
------------------------------------
Good good study, day day up!
----------------------------------:)

浙公网安备 33010602011771号