當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。