gpt4 book ai didi

Java 四字节转二进制 'bitmask'

转载 作者:行者123 更新时间:2023-12-04 06:37:03 25 4
gpt4 key购买 nike

我试图从一个二进制文件中取出四个字节,并将它们转换成一个位掩码,代表数据的零和元数据的 1。

我假设我需要通过将它们组合在一起来将它们转换为 int,然后通过移位来确定是否设置了位位置。

我无法弄清楚如何将所有四个组合在一起以获得我可以步进的 32 位掩码。

int mask = (((int)hbyte) & 0xff) << 8 | (((int)lbyte) & 0xff);

这会将两个组合在一起(Laurence Gonsalves 从另一篇文章中发表),但我无法弄清楚将四个组合在一起的语法。

或者这是否适用于 Enumset,我承认我不完全理解。

任何意见,将不胜感激。

谢谢。

托尼

** 只是为此添加另一个快速说明,(我不确定这是否通常允许,所以如果不允许,我提前道歉),通过我新创建的 int 并检查是否设置了位的最佳方法是什么或不?

目前我正在使用 if (((comboOfBytes >> bitmaskBit) & 1) == 0)但我不知道这是否是我需要的最优雅的检查方式。

此外,我仍然不完全确定我是否理解移位实际上允许检查所有 32 位!

再次感谢

最佳答案

您可以使用 DataInputStream从文件中读取 4 个字节作为 int。

或者,如果您读取字节 a、b、c、d:

int comboOfBytes = ((a & 0xff) << 24) | ((b & 0xff) << 16) | ((c & 0xff) << 8) | (d & 0xff);

(& 0xff) 是防止符号位扩展破坏高字节所必需的。

关于Java 四字节转二进制 'bitmask',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4749647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com