Java读取小端序还是大端的整数?

2022-08-31 10:14:25

我问是因为我正在将字节流从C进程发送到Java。在C端,32位整数的LSB是第一个字节,MSB是第4个字节。

所以我的问题是:在Java方面,当我们读取从C进程发送的字节时,Java端的字节序是什么?

后续问题:如果 Java 端的字节序与发送的字节序不同,我该如何在它们之间进行转换?


答案 1

使用网络字节顺序(大字节序),这与Java使用的方式相同。请参阅 C 中不同译者的人 hton。


答案 2

我通过Google偶然发现了这里,并得到了我的答案,即Java是大端。

通读这些回复,我想指出字节确实有一个字节序,尽管幸运的是,如果你只处理过“主流”微处理器,你不太可能遇到过它,因为英特尔,摩托罗拉和Zilog都同意他们的UART芯片的转换方向,并且一个字节的MSB将是,LSB将在他们的CPU中(我使用FORTRAN功率符号来强调这有多老。东西是:))。2**72**0

20多年前,当我们用Mac计算机替换1万美元的接口硬件时,我在一些航天飞机位串行下行链路数据中遇到了这个问题。很久以前,美国宇航局技术公司(NASA Tech)发表了一份关于它的简报。我只是使用了一个256元素查找表,在每个字节从位流移入后,位反转(等)。table[0x01]=0x80


推荐