字节顺序(Byte Order)

1、定义:

字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,通常有小端、 大端 两种字节顺序。
不同的平台会有不同的处理方式。

小端 字节序 指低字节数据存放在内存低地址处,高字节数据存放在内存高地址处;
例如像地址a写入0x0A0B0C0D之后,在内存中的数据便是:
字节顺序(Byte Order)_第1张图片
大端 字节序是高字节数据存放在低地址处,低字节数据存放在高地址处。 
字节顺序(Byte Order)_第2张图片
通常来讲,CPU只是简单的从内存中读取和存储数据,然后按照你你程序需要的格式提交,所以架构是小端字节序或是大端字节序不是特别重要。但是当数据替换到不同的平台系统时,系统必须符合数据的格式。
基于X86平台的PC机都是小端字节序的,而有的嵌入式平台则是大端字节序。因而对大于1字节的数据,都要变换其存储顺序。

2、大小端字节序判断:

int IsVAXOrder(void)
{
	short x, *px;
	unsigned char *pc;
	
	px = &x;
	pc = (unsigned char *) px;
	*pc = 1; 
	*(pc+1) = 0;        
	if (x == 1) 
		return 1;           //存储为1 0, 返回1,表示是小端字节序
	else 
		return 0;         //存储为0 1, 否则是大端字节序
}

3、大小端字节序转换:

如果需要转换字节序列,只需写出相应的转换函数即可

template
T SwapData(T p)
{
	int len = sizeof(T);
	char tmp;
	char *ptr = (char*)&p;
	for(int i=0; i

你可能感兴趣的:(存储)