想起之前阿里面试的时候有个面试官问道一个问题,怎么通过编码的方式获取当前机器是大端存储还是小端存储,当时问的我一脸懵逼,大小端还是在学计算机组成的时候接触到的概念,今天在看NIO的时候,突然又碰到了,而且居然提到了可以通过java.nio包中ByteOrder这个类文件来直接获取当前JVM运行的机器存储的固有字节顺序。
大小端
多字节数值被存储在内存中的方式一般被称为字节顺序。
如果数字数值的最高字节,位于内存的低位位置,那么系统就是大端字节顺序。
否则,如果数字数值的最低字节,位于内存的低位位置,那么系统就是小端字节顺序。
例如:32位的int值0x037fb4c7(十进制的58700999),下面内存地址从左到有增加,即左边地位地址右边高位地址。
- 大端字节顺序
|03|7f|b4|c7| - 小端字节顺序
|c7|b4|7f|03|
ByteOrder
|
|
如果你想知道自己的机器上的固有的字节存储顺序,就调用nativeOrder()方法就行了。代码如下:12345678public static void main(String[] args) { System.out.println(ByteOrder.nativeOrder().toString());}执行结果如下:================LITTLE_ENDIAN================
-EOF-