当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java java.nio.ByteOrder用法及代码示例


ByteOrder 是 java.nio package 中的一个类。一般来说,Byte Order 是指 ByteOrder 的枚举。

  • 在java中,有像int、char、float、double这样的原始数据类型,它们将以一定数量的字节将数据存储在主内存中。
  • 例如,一个字符或短整数占用 2 个字节,一个 32 位整数或浮点值占用 4 个字节,一个长整数或双精度浮点值占用 8 个字节。
  • 这些多字节类型之一的每个值都存储在一系列连续的内存位置中。
  • 这里,考虑一个长整数,占用8个字节,这8个字节在内存中(从低地址到高地址)可以存储为13,17,21,25,29,34,38,42;这种排列称为大端顺序(最高有效字节,“big” 末尾,存储在最低地址)。
  • 或者,这些字节可以存储为 42,38,34,29,25,21,17,13;这种排列称为小端顺序(最低有效字节,“little” 结尾,存储在最低地址到最高地址)。

Note: ByteOrder Class extends Object Class which is the root of the class hierarchy.

ByteOrder类有两个字段

场地 说明
BIG_ENDIAN 该字段将表示大端字节顺序。
LITTLE_ENDIAN 这是一个常量字段,表示小端字节顺序。

用法:类声明

public final class ByteOrder extends Object {}

该类的方法如下:

方法 说明
nativeOrder()

该方法的定义是通过按照与 JVM 相同的顺序分配直接缓冲区来提高 JVM 的性能。

此方法返回运行该 Java 虚拟机的硬件的本机字节顺序。

toString() 该方法返回以指定方式定义的字符串。

执行:

示例

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() 
                           + "}"); 
    } 
}
输出
OS Order         :- LITTLE_ENDIAN
ByteBuffer Order :- BIG_ENDIAN
{0 : 219223321}
{0 : 420811021}

Note:

  • The order of a newly-created byte buffer is always BIG_ENDIAN.
  • One can have different OS Order for different machines.


相关用法


注:本文由纯净天空筛选整理自pranaythanneru大神的英文原创作品 java.nio.ByteOrder Class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。