我已经使用了C格式的代码,但我完全不明白这个过程是什么。任何人都可以在java中为我解释或者如果有一个更好的方法在java中你能在这里写吗?谢谢
bool endianess(){
int testNum;
char *ptr;
testNum=1;
ptr=(char*) &testNum;
return (*ptr); //* return the byte at the lowest address
}
答案 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等来获取此信息。