在计算机系统中,对于跨越多字节的程序对象,我们必须建立两个规则:
某些机器在内存中按照从最低有效字节到最高有效字节的顺序存储对象,而另一些机器按照从最高有效字节到最低有效字节的顺序存储对象。最低有效字节在前面的方式,称为小端法,最高有效字节在前面的方式成为大端法。大多数Intel机器都使用小端法,我的机器是Intel机器使用的是小端模式,接下来我们来用C程序看一下自己的机器是大端法还是小端法
首先编写了一段程序足够我们查看任意类型的二进制码:
typedef unsigned char* byte_pointer;
void show_bytes(byte_pointer start, size_t len){
size_t i;
for(int i=0; i<len; i++){
printf("%.2x", start[i]) ;
}
}
void show_int(int x){
show_bytes((byte_pointer)&x, sizeof(x));
}
void show_float(float x){
show_bytes((byte_pointer)&x, sizeof(x));
}
void show_pointer(void * x){
show_bytes((byte_pointer)&x, sizeof(void *));
}
然后输入已下代码进行验证:
int main(){
int x = 0x123456;
show_int(x);
return 0;
}
得到结果为56341200,证明我的机器是小端模式。