Java 测试LITTLE_ENDIAN和BIG_ENDIAN场景

Java 测试LITTLE_ENDIAN和BIG_ENDIAN场景,java,nio,endianness,Java,Nio,Endianness,如果我需要以不同的方式处理LITTLE_ENDIAN和BIG_ENDIAN案例,如果我的系统使用LITTLE_ENDIAN,我如何测试BIG_ENDIAN案例?当系统的ByteOrder.nativeOrder()等于(ByteOrder.LITTLE_ENDIAN)时,如何测试ByteOrder.nativeOrder()等于(ByteOrder.BIG_ENDIAN)的情况?因为byteBuffer.order(ByteOrder.BIG_ENDIAN)只是更改byteBuffer上的顺序,

如果我需要以不同的方式处理
LITTLE_ENDIAN
BIG_ENDIAN
案例,如果我的系统使用
LITTLE_ENDIAN
,我如何测试
BIG_ENDIAN
案例?当系统的ByteOrder.nativeOrder()等于(ByteOrder.LITTLE_ENDIAN)时,如何测试ByteOrder.nativeOrder()等于(ByteOrder.BIG_ENDIAN)的情况?因为byteBuffer.order(ByteOrder.BIG_ENDIAN)只是更改byteBuffer上的顺序,而不是系统正确吗?

使用。其方法如下:

修改此缓冲区的字节顺序

参数:
bo
-新的字节顺序,或

请注意,
ByteBuffer
的javadoc表示:

字节缓冲区的初始顺序始终为

范例

输出

value=0x075bcd15=123456789
[7, 91, -51, 21]
[21, -51, 91, 7]

当系统的ByteOrder.nativeOrder()等于(ByteOrder.LITTLE_ENDIAN)时该怎么办。如何测试ByteOrder.nativeOrder()等于(ByteOrder.BIG_ENDIAN)的情况?因为byteBuffer.order(ByteOrder.BIG_ENDIAN)只是改变byteBuffer上的顺序,而不是系统,对吗?@Artanis没有任何东西可以改变系统的字节顺序。它是硬连接到CPU的“如何测试ByteOrder.nativeOrder().equals(ByteOrder.BIG_ENDIAN)的情况?”在CPU为BIG-ENDIAN的系统上运行代码。好吧,那么我的问题仍然是如何测试其他场景?因此我需要找到一台新的BIG-ENDIAN计算机来运行代码,以测试其功能,没有其他方法吗?@Artanis Java的全部要点是它可以在任何地方运行,这意味着Java本身在大端和小端系统上的行为都是一样的。Java代码应该关注本机字节顺序,除非它与用不同语言编写的代码进行通信,而这种语言并不关心本机字节顺序。
int value = 123456789;
byte[] bigEndian = ByteBuffer.allocate(Integer.BYTES)
        .order(ByteOrder.BIG_ENDIAN)
        .putInt(value)
        .array();
byte[] littleEndian = ByteBuffer.allocate(Integer.BYTES)
        .order(ByteOrder.LITTLE_ENDIAN)
        .putInt(value)
        .array();
System.out.printf("value = 0x%08x = %d%n", value, value);
System.out.println(Arrays.toString(bigEndian));
System.out.println(Arrays.toString(littleEndian));