首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java中发现系统的特性

在java中发现系统的特性
EN

Stack Overflow用户
提问于 2012-02-24 13:26:13
回答 6查看 12.4K关注 0票数 17

我发现如果机器是bigindian或littleindian,则检查that的算法(int C)是

代码语言:javascript
复制
int is_big_endian(void)
{
    union {
        uint32_t i;
        char c[4];
    } bint = {0x01020304};

    return bint.c[0] == 1; 
}

我怎么能在*java?*I中找到这样的东西,我不想使用内置的lib,因为这是一个面试问题,我想在java中找到它。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-02-24 13:35:48

我不相信这一点,不过你可以试试:

代码语言:javascript
复制
import java.nio.ByteOrder;

if (ByteOrder.nativeOrder().equals(ByteOrder.BIG_ENDIAN)) {
  System.out.println("Big-endian");
} else {
  System.out.println("Little-endian");
}
票数 45
EN

Stack Overflow用户

发布于 2012-02-24 16:09:28

我怎么能在* java中找到这样的东西?*我不想使用内置的lib,因为这是一个面试问题,我想在java中找到它。

在纯Java中,如果不调用库,就无法做到这一点。这是因为;

  • Java说,如果你能避免这样的事情,你就不应该关心它。
  • Java作为一种语言的特性相对较差,它依赖于它的库来做许多可能是另一种语言中的语言特性的事情。
  • 大多数人不区分语言的功能和内置的库,因为这种区别很少有用。
  • Byte代码/虚拟机不是大端代码或小endian,只有真正的实现。)

旧的库只支持大端(大多数处理器使用,英特尔是一个明显的例外)较新的库可以设置的方式或其他方式。

非常罕见的是,您需要再次了解如何重新编写内置的功能,如果您知道了,您就会阅读代码,说明它是如何完成的(即使您知道如何完成)。

我见过许多人重新开发内置的功能,这是错误的,更难使用,因为它表现出意想不到的方式,性能低于内置的库。与JDK中的内容相比,编写一些更快或更定制的东西是很有可能的,但是知道如何从头顶上写东西却很少有用。

我有时会收到这些问题,在回答这个问题之前,我会指出你不愿意这样做的所有原因。;)

票数 4
EN

Stack Overflow用户

发布于 2016-11-11 23:33:13

代码语言:javascript
复制
System.out.println(ByteOrder.nativeOrder());
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9431526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档