如何在Java或python中获得endianess?

如何在Java或python中获得endianess?,java,python,c,endianness,Java,Python,C,Endianness,在C中,我可以通过以下方法检查机器的Endianess。如何使用python或Java程序?。在Java中,char是2字节,不像C中的1字节。我认为使用python可能是不可能的,因为它是一种动态语言,但我可能错了 bool isLittleEndian() { // 16 bit value, represented as 0x0100 on Intel, and 0x0001 else short pattern = 0x0001; //

C
中,我可以通过以下方法检查机器的
Endianess
。如何使用
python
Java
程序?。在Java中,char是
2字节
,不像
C
中的
1字节
。我认为使用
python
可能是不可能的,因为它是一种
动态语言
,但我可能错了

bool isLittleEndian()
     {
       // 16 bit value, represented as 0x0100 on Intel, and 0x0001 else
       short pattern = 0x0001;
       // access first byte, will be 1 on Intel, and 0 else
       return *(char*) &pattern == 0x01;
     }
在Java中,它只是

ByteOrder.nativeOrder();
…返回
BIG\u ENDIAN
LITTLE\u ENDIAN

您可以使用:

或者,您也可以通过内置模块获得endianness:

当然,这都是Python

import java.nio.ByteOrder;

public class Endian {
    public static void main(String argv[]) {
        ByteOrder b = ByteOrder.nativeOrder();
        if (b.equals(ByteOrder.BIG_ENDIAN)) {
            System.out.println("Big-endian");
        } else {
        System.out.println("Little-endian");
        }
    }
}

valter

在Java和C中都定义了
short
(字节)
强制转换,以返回
short
的“小”端,而不考虑处理器的端号。而
>
被定义为从“大”端转移到“小”端(理论上你不必知道也不必关心这个问题。为什么你想知道endian?不管平台如何,Java总是big endian。@当然,我知道这些信息。但是,编码是可能的。这是一个面试问题。请看这篇帖子:谢谢你的回答。请看这个:;我更熟悉这就是为什么我有兴趣在Java中使用按位操作而不是使用ByteOrder.native.Order()来获得endianess@user1988876-页面顶部的例程是C代码,它使用
short
char
的别名来做它的脏活。正如我所说,在Java.Thx中没有办法做这样的别名来指出我帖子中的错误…删除它,因为我讨厌糟糕的信息,在我的帖子中显然是不正确的。但是你只需要知道如果您处理的是在机器级数据缓冲区等上运行的“奇数”接口(如nio)。
import struct

def is_little():
    packed = struct.pack("i", 1)
    return packed[0] == "\x01";

print is_little()
import java.nio.ByteOrder;

public class Endian {
    public static void main(String argv[]) {
        ByteOrder b = ByteOrder.nativeOrder();
        if (b.equals(ByteOrder.BIG_ENDIAN)) {
            System.out.println("Big-endian");
        } else {
        System.out.println("Little-endian");
        }
    }
}