67、讲讲大端小端,如何检测
⼤端模式:是指数据的⾼字节保存在内存的低地址中,⽽数据的低字节保存在内存的⾼地址端。 ⼩端模式,是指数据的⾼字节保存在内存的⾼地址中,低位字节保存在在内存的低地址端。
直接读取存放在内存中的⼗六进制数值,取低位进⾏值判断
int a = 0x12345678;
int *c = &a;
c[0] == 0x12 ⼤端模式
c[0] == 0x78 ⼩段模式⽤共同体来进⾏判断
union 共同体所有数据成员是共享⼀段内存的,后写⼊的成员数据将覆盖之前的成员数据,成员数据都有相同的⾸地址。 Union 的⼤⼩为最⼤数据成员的⼤⼩。
union 的成员数据共⽤内存,并且⾸地址都是低地址⾸字节。 Int i= 1时:⼤端存储1放在最⾼位,⼩端存储1放在最低位。当读取char ch时,是最低地址⾸字节,⼤⼩端会显示不同的值。
#include<stdio.h>
int main() {
union {
int a; //4 bytes
char b; //1 byte
} data; 1//占4 bytes,⼗六进制可表示为 0x 00 00 00 01
//b因为是char型只占1Byte,a因为是int型占4Byte
//所以,在联合体data所占内存中,b所占内存等于a所占内存的低地址部分
if(1 == data.b) {
//⾛到这⾥意味着说明a的低字节,被取给到了b
//即a的低字节存在了联合体所占内存的(起始)低地址,符合⼩端模式特
printf("Little_Endian\n");
} else {
printf("Big_Endian\n");
}
return 0;
}Last updated