虽然Java之中的内存分配都Java本身都已经处理好了,不存在Big Endian和Little Endian的区别。但是,在一些特殊的情况下,我们任然需要知道CPU到底是big endian或者little endian。
Java里面可以直接的调用java.nio.ByteOrder类的方法nativeOrder()方法,下面的是我的测试代码:
- import java.nio.ByteOrder;
-
-
public class TestCPU {
-
public static void main(String[] args) {
-
if (ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN) {
-
System.out.println("BIG_ENDIAN");
-
} else {
-
System.out.println("LITTLE_ENDIAN");
-
}
-
}
-
}
在Windows Intel上输出的结果是:
LITTLE_ENDIAN
在AIX PPC64上面的输出结果是:
=> java TestCPU
BIG_ENDIAN
===
下面是C语言中的作法:
- #include <stdio.h>
- int main()
- {
- union ut{
- short s;
- char c[2];
- }u;
-
- if(sizeof(short) == 2)
- {
- u.s = 0x0102;
- if(u.c[0] == 1 && u.c[1] == 2)
- {
- printf("big enidan.\n");
- } else if(u.c[0] == 2 && u.c[1] == 1)
- {
- printf("little endian.\n");
- }
- }
- return 0;
- }
阅读(15435) | 评论(1) | 转发(0) |