1

这不是一个问题,而是一个健全性检查!

如果您需要将 4 个字节作为 Big endian 中的位掩码读入 Java,那么这些字节是:

0x00、0x01、0xB6、0x02。

将其转换为 int 将是:112130

二进制是:00000000000000011010011000000010

一系列字节的字节序不会影响位位置,不是吗?

谢谢

托尼

4

3 回答 3

1

一般来说,如果您正在读取的内容是为您提供整个字节,那么您无需担心构成这些字节的位顺序:正如您正确假设的那样,重要的是字节的顺序.

您可能不得不担心单个位的“字节顺序”的时间是您实际读取/写入位流而不是整个字节的时间(例如,如果您正在编写在位级别操作的压缩算法,您d 必须决定写入位的顺序)。

于 2011-01-21T13:52:37.117 回答
1

Endian-ness 反映字节的顺序,但不反映这些字节中位的顺序。

假设我想表示(两字节)字 0x9001。如果我只是用二进制输入,那将是 1001000000000001。

如果我在大端机器上转储字节(从低地址到高地址),我会看到10010000 00000001.

如果我在 little-endian 机器上转储字节(从低地址到高地址),我会看到00000001 10010000.

于 2011-01-21T14:16:21.617 回答
0

您唯一需要注意的是您如何“将 4 个字节读入 Java”——这就是字节序很重要的地方,您可能会搞砸(DataInputStream假设为大字节序)。一旦你读到的值变成了 int 112130,你就设置好了。

于 2011-01-21T13:48:24.717 回答