jvm在java中发现系统的终结性
我发现,如果机器是bigindian或littleindian,则checkink的算法(int C)是
int is_big_endian(void)
{
union {
uint32_t i;
char c[4];
} bint = {0x01020304};
return bint.c[0] == 1;
}
我怎样才能在java中找到这样的东西*我不想使用内置LIB,因为这是一个面试问题。我想在java中找到它
# 1 楼答案
JVM,也就是Java,严格地说是big-endian,而不管主机平台是什么
然而,在关联字符编码中,可以提取有关系统默认编码的信息,该编码可能具有尾端性(事实上,它很可能具有尾端性)
以下是一些代码:
编辑:
请参考以下答案:Java's Virtual Machine's Endianness
公平地说,调用本机代码是可能的,在那里你可以得到本机字节顺序的东西
# 2 楼答案
在有太阳的JVM上。杂项。不安全的类,并将不安全的单例存储在名为“theUnsafe”的静态实例变量中,然后可以使用以下方法。我在Oracle JVM和openjdk上成功地测试了这一点。该代码的工作原理是将短(2字节)值1写入内存,然后读取第一个字节
# 3 楼答案
# 4 楼答案
我的方法只是改变数字,比较它是否能作为little endian机制的预期
# 5 楼答案
我不相信这一点,不过你可以试试: