java 中的 java.nio.ByteOrder 类
原文:https://www . geesforgeks . org/Java-nio-byte order-class-in-Java/
ByteOrder 是一个来自 java.nio 包的类。一般来说,字节顺序意味着字节顺序的枚举。
- 在 java 中,有像 int、char、float、double 这样的原始数据类型,它们会将数据以一定的字节数存储在主内存中。
- 例如,字符或短整数占用 2 字节,32 位整数或浮点值占用 4 字节,长整数或双精度浮点值占用 8 字节。
- 这些多字节类型之一的每个值都存储在一系列连续的存储单元中。
- 这里,考虑一个占据 8 个字节的长整数,这 8 个字节可以存储在内存中(从低地址到高地址)为 13,17,21,25,29,34,38,42;这种排列方式被称为大端序(最高有效字节“大”端存储在最低地址)。
- 或者,这些字节可以存储为 42、38、34、29、25、21、17、13;这种排列被称为小端顺序(最低有效字节“小”端存储在最低地址到最高地址)。
注意: ByteOrder 类扩展了对象类,它是类层次结构的根。
ByteOrder 类有两个字段
| field | describe | | --- | --- | | BIG _ ENDIAN | This is a field that will indicate the big-endian byte order. | | 【LITTER _ ENDIAN】 | This is a constant field that indicates the little-endian byte order. |语法:类声明
public final class ByteOrder extends Object {}
这个类的方法如下:
| way | describe | | --- | --- | | 原生顺序() | 这个方法被定义为通过向 JVM 分配相同顺序的直接缓冲区来提高 JVM 的性能。该方法返回运行该 Java 虚拟机的硬件的本机字节顺序。 | | toString() | This method returns a string defined in the specified way. |实施:
例
Java 语言(一种计算机语言,尤用于创建网站)
// Java Program to demonstrate ByteOrder Class
// Importing input output and utility classes
import java.io.*;
// Importing required classes from java.nio package
// for network linking
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.IntBuffer;
// Main class
public class GFG {
// Main driver method
public static void main(String[] args) throws Exception
{
// Here object is created and allocated and
// it with 8 bytes of memory
ByteBuffer buf = ByteBuffer.allocate(8);
// This line of code prints the os order
System.out.println("OS Order :- "
+ ByteOrder.nativeOrder());
// This line of code prints the ByteBuffer order
// Saying that whether it is in BIG_ENDIAN or
// LITTLE_ENDIAN
System.out.println("ByteBuffer Order :- "
+ buf.order());
// Here the conversion of int to byte takes place
buf.put(new byte[] { 13, 17, 21, 25 });
// Setting the bit set to its complement using
// flip() method of Java BitSet class
buf.flip();
IntBuffer integerbuffer = buf.asIntBuffer();
System.out.println("{" + integerbuffer.position()
+ " : " + integerbuffer.get()
+ "}");
integerbuffer.flip();
buf.order(ByteOrder.LITTLE_ENDIAN);
integerbuffer = buf.asIntBuffer();
System.out.println("{" + integerbuffer.position()
+ " : " + integerbuffer.get()
+ "}");
}
}
Output
OS Order :- LITTLE_ENDIAN
ByteBuffer Order :- BIG_ENDIAN
{0 : 219223321}
{0 : 420811021}
注:
- 新创建的字节缓冲区的顺序始终是 BIG_ENDIAN。
- 不同的机器可以有不同的操作系统订单。
版权属于:月萌API www.moonapi.com,转载请注明出处