我发现如果机器是bigindian或littleindian,则检查that的算法(int C)是
int is_big_endian(void)
{
union {
uint32_t i;
char c[4];
} bint = {0x01020304};
return bint.c[0] == 1;
}我怎么能在*java?*I中找到这样的东西,我不想使用内置的lib,因为这是一个面试问题,我想在java中找到它。
发布于 2012-02-24 13:35:48
我不相信这一点,不过你可以试试:
import java.nio.ByteOrder;
if (ByteOrder.nativeOrder().equals(ByteOrder.BIG_ENDIAN)) {
System.out.println("Big-endian");
} else {
System.out.println("Little-endian");
}发布于 2012-02-24 16:09:28
我怎么能在* java中找到这样的东西?*我不想使用内置的lib,因为这是一个面试问题,我想在java中找到它。
在纯Java中,如果不调用库,就无法做到这一点。这是因为;
旧的库只支持大端(大多数处理器使用,英特尔是一个明显的例外)较新的库可以设置的方式或其他方式。
非常罕见的是,您需要再次了解如何重新编写内置的功能,如果您知道了,您就会阅读代码,说明它是如何完成的(即使您知道如何完成)。
我见过许多人重新开发内置的功能,这是错误的,更难使用,因为它表现出意想不到的方式,性能低于内置的库。与JDK中的内容相比,编写一些更快或更定制的东西是很有可能的,但是知道如何从头顶上写东西却很少有用。
我有时会收到这些问题,在回答这个问题之前,我会指出你不愿意这样做的所有原因。;)
发布于 2016-11-11 23:33:13
System.out.println(ByteOrder.nativeOrder());https://stackoverflow.com/questions/9431526
复制相似问题