编写一个函数来确定计算机是java中的大端还是小端

时间:2014-01-30 03:56:36

标签: java endianness

我已经使用了C格式的代码,但我完全不明白这个过程是什么。任何人都可以在java中为我解释或者如果有一个更好的方法在java中你能在这里写吗?谢谢

bool endianess(){
 int testNum;
 char *ptr;

 testNum=1;
 ptr=(char*) &testNum;
 return (*ptr); //* return the byte at the lowest address
}

2 个答案:

答案 0 :(得分:4)

在Little Endian架构中,整数值0x1将在内存中写出,如

0x1 0x0 0x0 ....

这样函数将返回1

相反,在Big Endian架构中,字节顺序为

0x0 0x0 ... 0x1

但是int中有很多字节(大于或等于2),所以

此函数将返回0.

以下是can't be done in Java directly原因的参考,但您可以使用JNI转义到C库并返回结果。

答案 1 :(得分:1)

您可以使用System.getProperty(“sun.cpu.endian”)。或者,您可以使用SIGAR(https://github.com/hyperic/sigar),Java本机访问,JNI等来获取此信息。