编写一个确定计算机是大的endian还是Java中的小恩迪安的函数



我已经将此代码重新为c格式,但我不明白过程是什么。谁能在Java为我解释它,或者如果Java有更好的方法,您可以在这里写吗?谢谢你

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

在一个小的endian体系结构中,整数值0x1将写在内存中,例如

0x1 0x0 0x0 ....

这样该功能将返回1

相反,在一个大的末日架构中,字节的顺序将为

0x0 0x0 ... 0x1

然而,许多字节在int中(较大或等于2的工作),因此

此功能将返回0。

以下是为什么它不能直接在Java中进行的参考,但是您可以使用JNI逃到C库并返回结果。

您可以使用system.getProperty(" sun.cpu.endian")。另外,您可以使用Sigar(https://github.com/hyperic/sigar),Java本机访问,JNI等。

最新更新