我有一个看起来像这样的二进制数:
00000000 00000000 00000011 00001101 = 781 integer value = integer name "packed"
我如何能够在 Java 中使用按位将其中的每一个提取为单独的整数值。像下面这样:
int a = (function) = 00000000;
int b = (function) = 00000000;
int c = (function) = 00000011;
int d = (function) = 00001101;
如果你能看到我在上面做什么..我想把第一个 8 变成一个整数,然后把下一个变成第二个整数,依此类推..我认为你在 java 中使用 bit wise 来做到这一点,但我完全不确定。任何帮助表示赞赏。对不起,但我对这种事情完全陌生,真的需要帮助,谢谢!基本上(函数)应该等于这样的东西:
packed >> 5; (I know this isn't nearly right that is why i am needing help on this)...
谢谢!
最佳答案
你是对的,这里需要按位运算。
首先,使用掩码仅隔离您感兴趣的位,关闭所有其他位:
value & 0xFF000000 // isolate most significant 8 bits
value & 0x00FF0000 // isolate next 8 bits
value & 0x0000FF00 // isolate next 8 bits
value & 0x000000FF // isolate least significant 8 bits
然后将这些位移入最低位,存入a
、b
、c
、d
(一个无符号位移位):
(value & 0xFF000000) >>> 24 // Shift bits 24-31 to bits 0-7
(value & 0x00FF0000) >>> 16 // Shift bits 16-23 to bits 0-7
(value & 0x0000FF00) >>> 8 // Shift bits 8-15 to bits 0-7
(value & 0x000000FF) // No need to shift the last one!
关于java - 从二进制数据中提取特定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17077559/