大小端模式
以前对大端和小端模式一直不太了解,而且还经常弄混淆,在此,简单的总结如下:
在计算机业界,Endian表示数据在存储器中的存放顺序。
1) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
2) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
2) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
| 内存地址 | 小端模式存放内容 | 大端模式存放内容 |
| 0x4000 | 0x34 | 0x12 |
| 0x4001 | 0x12 | 0x34 |
Java和所有的网络通讯协议都是使用Big-Endian的编码。
按照概念,通过下列程序,可以测试出你的计算机是大端还是小端模式。
测试程序一
#include <stdio.h>
#include <stdlib.h>
int main(){
short int x = 0x1234;
char x0, x1;
x0 = ((char*)&x)[0]; //low
x1 = ((char*)&x)[1]; //high
if(x0 == 0x12 && x1 == 0x34)
printf("big endian\n");
else
printf("little endian\n");
}
测试程序二
#include <stdio.h>
#include <stdlib.h>
int main(){
union DIAN{
char tc[2];
short int inum;
};
union DIAN dian;
dian.inum = 0x1234;
if(dian.tc[0] == 0x12 && dian.tc[1] == 0x34)
printf("big endian\n");
else
printf("little endian\n");
}
本文介绍了计算机中数据存储的不同方式——大端模式与小端模式,并提供了两种测试方法来判断计算机采用的是哪种模式。此外,还强调了Java和网络通讯协议均采用大端模式。
8460

被折叠的 条评论
为什么被折叠?



