这不是一个问题,而是一个健全性检查!
如果您需要将 4 个字节作为 Big endian 中的位掩码读入 Java,那么这些字节是:
0x00、0x01、0xB6、0x02。
将其转换为 int 将是:112130
二进制是:00000000000000011010011000000010
一系列字节的字节序不会影响位位置,不是吗?
谢谢
托尼
这不是一个问题,而是一个健全性检查!
如果您需要将 4 个字节作为 Big endian 中的位掩码读入 Java,那么这些字节是:
0x00、0x01、0xB6、0x02。
将其转换为 int 将是:112130
二进制是:00000000000000011010011000000010
一系列字节的字节序不会影响位位置,不是吗?
谢谢
托尼
一般来说,如果您正在读取的内容是为您提供整个字节,那么您无需担心构成这些字节的位顺序:正如您正确假设的那样,重要的是字节的顺序.
您可能不得不担心单个位的“字节顺序”的时间是您实际读取/写入位流而不是整个字节的时间(例如,如果您正在编写在位级别操作的压缩算法,您d 必须决定写入位的顺序)。
Endian-ness 反映字节的顺序,但不反映这些字节中位的顺序。
假设我想表示(两字节)字 0x9001。如果我只是用二进制输入,那将是 1001000000000001。
如果我在大端机器上转储字节(从低地址到高地址),我会看到10010000 00000001
.
如果我在 little-endian 机器上转储字节(从低地址到高地址),我会看到00000001 10010000
.
您唯一需要注意的是您如何“将 4 个字节读入 Java”——这就是字节序很重要的地方,您可能会搞砸(DataInputStream
假设为大字节序)。一旦你读到的值变成了 int 112130,你就设置好了。