java - 从二进制数据中提取特定位

标签 java binary extract bit-manipulation bit

我有一个看起来像这样的二进制数:

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

然后将这些位移入最低位,存入abcd(一个无符号位移位):

(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/

相关文章:

java - 解析 csv 时保留引号

python - 在python中读取二进制大端文件

c - 复制结构时没有获得正确的值

python - 在正则表达式中查找带有大写字母并以特定单词结尾的字符串

java - 影院座位选择和取消选择在 JButton 中不起作用?

java - 使用 GSON 反序列化 JSON 对象数组

java - 如何将这个二进制乘法代码的答案转化为二进制?

php - 使用 PHP 和 xPath 从 HTML 中提取数据

python - 从文本文件中提取数据列表

java - 工具栏选定选项卡文本颜色 Android