1、字节序
字节顺序,又称端序或尾序(英语:Endianness)。在计算机科学计算机科学")领域中,是跨越多字节的程序对象的存储规则。
在几乎所有的机器上,多字节对象都被存储为连续的字节序列。例如在C语言中,一个类型为int
的变量x
地址为0x100
,那么其对应地址表达式&x
的值为0x100
。且x
的四个字节将被存储在存储器的0x100, 0x101, 0x102, 0x103
位置。
2、大小端
在计算机中一般讲字节序分为两类:Big-Endian
(大端字节序) 和 Little-Endian
。
a) Little-Endian 高位字节在前,低位字节在后。
b) Big-Endian 低位字节在前,高位字节在后。
c) 网络字节序:TCP/IP各层协议将字节序定义为Big-Endian,因此TCP/IP协议中使用的字节序通常称之为网络字节序。
举个小例子:
整数127(十进制)在计算机(64位)中大/小端字节序
3、x86中的字节序
在x86的计算机中,一般采用的是小端字节序
#include<stdio.h>
int main(){
int b = 127;
int *p = &b;
char c = 0 ;
for(int i = 0;i < 4;i++){
c = *((char*)p+i);
printf("c is %d \n",c);
}
}
~
输出
c is 127
c is 0
c is 0
c is 0