背景:在开发电信行业软件时候,文档有这样的规定:两台机子使用大端机方式进行传输。
我头蒙了,第一次听到大端机、小端机。后来花了一天时间学会了,现在把它整理一下。
一、首先要明白,大端机、小端机只是一种存储方式,是数据在内存中存储的方式。
计算机中存储数据的最小单位是字节,当数据只有一个字节时,单个字节当然不存在排序的问题。
那如果数据是两个字节呢?那这两个字节在不同的平台就有不同排序问题,到底哪一个字节放左边,哪一个字节放右边,这就产生了大端机小端机的说法。
现在我们要理解两组名词:
什么是高地址、低地址?
什么是高位、低位?
比如一个16进制数据:0x12345678。
从左到右依次是低地址→高地址。高低地址是针对内存来说的。
关于高位低位就更好理解了,跟10进制一样,从左到右依次是高位→低位。高地位是针对数值来说的。
低地址放高位数据就是大端机存储方式。
低地址放低位数据就是小端机存储方式。
二、那我们常见的平台都是什么存储方式呢?
在java环境中,java编写的程序都是采用大端机方式来存储数据,因为java与平台无关。
在网络编程中,TCP/IP协议统一采用大端机方式传送数据,所以我们也会把大端机方式称之为网络字节序。
大端机有一个称呼“所见即所得”,大端机方式就是与我们人类思维一致的方式,从左到右存储数据。
我头蒙了,第一次听到大端机、小端机。后来花了一天时间学会了,现在把它整理一下。
一、首先要明白,大端机、小端机只是一种存储方式,是数据在内存中存储的方式。
计算机中存储数据的最小单位是字节,当数据只有一个字节时,单个字节当然不存在排序的问题。
那如果数据是两个字节呢?那这两个字节在不同的平台就有不同排序问题,到底哪一个字节放左边,哪一个字节放右边,这就产生了大端机小端机的说法。
现在我们要理解两组名词:
什么是高地址、低地址?
什么是高位、低位?
比如一个16进制数据:0x12345678。
从左到右依次是低地址→高地址。高低地址是针对内存来说的。
关于高位低位就更好理解了,跟10进制一样,从左到右依次是高位→低位。高地位是针对数值来说的。
低地址放高位数据就是大端机存储方式。
低地址放低位数据就是小端机存储方式。
二、那我们常见的平台都是什么存储方式呢?
在java环境中,java编写的程序都是采用大端机方式来存储数据,因为java与平台无关。
在网络编程中,TCP/IP协议统一采用大端机方式传送数据,所以我们也会把大端机方式称之为网络字节序。
大端机有一个称呼“所见即所得”,大端机方式就是与我们人类思维一致的方式,从左到右存储数据。
C/C++语言编写的程序,数据存储方式是与编译平台所在的cpu相关的。
这是我第一编博文,如果对你有用,鼓励一下吧~~哈哈