字节
字节是操作系统及其I/O设备使用的基本数据类型,当JVM和操作系统之间传递数据时,需要将其它的数据类型拆分成构成他们的字节。
字节顺序
尽管字节大小已经被确定了,但是它的排列顺序问题一直没有被广泛的认同,也就是大小端的问题。什么是大端?什么是小端?
基本数据类型 | 所占字节数 |
---|---|
byte | 1 |
char | 2 |
short | 2 |
int | 4 |
long | 8 |
float | 4 |
double | 8 |
表中明确的知道了除boolean外每个基本类型所占的字节数,如何对这个字节序列进行排列这就是我们需要了解的大小端问题。
如果一个int数字的最高字节优先存储于内存地址中,则为大端,反之最低字节优先存储于内存地址中,则为小端。当然,字节序列的问题一般不由软件设计者决定,通常取决于硬件设计。
但是在IP协议中规定了使用大端的网络字节序列。所有在IP分组报文的协议部分中使用的多字节数组必须先在本地主机的字节序列和通用的网络字节序列之间进行转换。在nio中,字节序列使用java.nio.ByteOrder进行转换。
我在实际开发过程当中,需要将其它类型转换为字节序列时,需要注意大小端,并且给对接的同事统一大小端,以免出错。
在真正开始学习ByteBuffer之前,我们先看看它有哪些方法: