大端的位掩码

时间:2011-01-21 13:35:12

标签: java endianness masking bitmask

这不是一个问题,而是一个完整性检查!

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

0x00,0x01,0xB6,0x02。

将其变为int将是:112130

二进制文件为:00000000000000011010011000000010

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

由于

3 个答案:

答案 0 :(得分:1)

一般来说,如果你正在读取的东西是给你整个字节,那么你不必担心构成这些字节的位的顺序:它只是重要的字节顺序,如你正确的假设。

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

答案 1 :(得分:1)

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

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

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

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

答案 2 :(得分:0)

你唯一需要注意的是你如何“将4个字节读入Java” - 这就是字节序很重要的地方,你可以搞砸它(DataInputStream假设大端)。一旦你读过的值变成了int 112130,就可以了。