大恩迪安的bitmask
-
16-10-2019 - |
题
这不是一个理智检查的问题!
如果您需要将4个字节读入Java,则是Big Endian中的一个bitmask,而这些字节是:
0x00,0x01,0xb6,0x02。
将其纳入INT将是:112130
二进制将是:000000000000000110100110000010
一系列字节的终点不会影响位置,对吗?
谢谢
托尼
解决方案
endian-反映了字节的排序,但不反映这些字节内部的序列。
假设我想表示(两个字节)单词0x9001。如果我只是以二进制输入,那就是1001000000000001。
如果我将字节(从较低地址到更高地址)在大型机器上倾倒,我会看到 10010000 00000001
.
如果我将字节(从较低地址到更高地址)在一台小型机器上倾倒,我会看到 00000001 10010000
.
其他提示
通常,如果您正在阅读的东西给您整个字节,那么您就不必担心构成这些字节的零件的顺序:正是您正确地假设,这只是字节的顺序。
您可能不得不担心单个位的“ endianness”的时间是您实际读/编写零件流而不是整个字节的地方(例如,如果您编写了在位级别操作的压缩算法,那么您' d必须决定要在哪个命令中写下任何订单)。
您唯一要注意的是,您究竟如何将“ 4个字节读为Java” - 这就是Endianness重要的地方,您可以将其弄乱(DataInputStream
假设Big Endian)。一旦您阅读的价值已成为INT 112130,就可以了。
不隶属于 StackOverflow