判断机器是big-endian、little-endian


联合体union和大小端(big-endian、little-endian):
下边示范了一种用途,代表四个含义的四个变量,但是可以用一个int来操作,直接int赋值,无论内存访问(指针大小的整数倍,访问才有效率),
还是时间复杂度(一次和四次的区别,而且这四次有三次都是不整齐的地址),都会低一些。



1
#include<stdio.h> 2 union var{ 3 char c[4]; 4 int i; 5 }; 6 7 int main(){ 8 union var data; 9 data.c[0] = 0x04;//因为是char类型,数字不要太大,算算ascii的范围~ 10 data.c[1] = 0x03;//写成16进制为了方便直接打印内存中的值对比 11 data.c[2] = 0x02; 12 data.c[3] = 0x11; 13 //数组中下标低的,地址也低,按地址从低到高,内存内容依次为:04,03,02,11。总共四字节! 14 //而把四个字节作为一个整体(不分类型,直接打印十六进制),应该从内存高地址到低地址看,0x11020304,低位04放在低地址上。 15 printf("%x ",data.i); 16 }
原文地址:https://www.cnblogs.com/wsw-seu/p/8946605.html