java - 将Java String十六进制数转换为int十六进制数

标签 java hex bit-manipulation

我需要弄清楚,如何设置十六进制数 0xffff,它在下面的代码中动态地用于按位与。

int offsetData = address & 0xffff;

例如我需要这样的东西:

int offsetData = address & myHexaValue;

我有一个十进制 int 值,我需要用十六进制格式代替 myHexaValue

这是我现在的状态。

int decimalShift = 16*8;    
String myHexaValueString = Integer.toHexString(decimalShift);

现在..我可以将我的 String 六进制数转换为 int 六进制数,以便我可以将结果放入 myHexaValue 吗?

最佳答案

您不需要转换它。没有十六进制数这样的东西。以十六进制书写的数字是以 16 进制表示法书写的数字。我们通常使用 base 10 表示法,所以我们有从 0 到 9 的数字,但在十六进制表示法中,你有从 0 到 F 的数字。 所以只做一个和操作:

int offsetData = address & decimalShift;

编辑: 要仅获取低 16 位,请使用掩码。 0xffff 并执行 & 操作,高 16 位将设置为 0,低 16 位保持不变。 所以:

int offsetData = address & decimalShift & 0xffff;

编辑2: 要获得任意数字 (0,...,31) 的掩码,您可以使用此函数:

private static int getMask(int numOfOnes) {
        int i = 0x80000000;
        i = i>>(32-numOfOnes-1);
        i = ~i;
        return i;
    }

Pauls 解释:“用 >> 进行位移,在移位之前用 MSB 的值填充最高有效位,因此在这段代码中,除了 numOfOnes 最低位之外的所有位都用 1 填充,然后数字被反转。”

关于java - 将Java String十六进制数转换为int十六进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34843230/

相关文章:

java - 插入到 mongoDB 时检查唯一性

java - 如何从提供的文件路径获取现有父路径

c++ - 从 Hex 中的 istream 中读取 double

来自 CharCode 的 Javascript 十六进制字符串

python - 列出对opencv bgr的理解,以对调色板进行十六进制合并。 TypeError:无法解压缩不可迭代的numpy.uint8对象

assembly - 如何仅使用逻辑运算符AND判断数字是否为4的倍数?

java - 难以理解数字序列的按位与,提供的代码

c - 如何对像素数据进行位 strip 化?

java - Powermock 和 Mockito 与 RETURN_DEEP_STUBS 和流畅的界面 (Jsoup)

java - 如何仅进行 "n"比较从文本文件中查找最小值和最大值?