gpt4 book ai didi

java - 如何使用 Java 屏蔽十六进制 int?

转载 作者:搜寻专家 更新时间:2023-11-01 01:01:01 25 4
gpt4 key购买 nike

我有一个包含六进制值的整数。我想从这个六进制值中提取第一个字符,就像它是一个字符串值一样,但我不想将它转换为一个字符串。

int a = 0x63C5;
int afterMask= a & 0xFFF;
System.out.println(afterMask); // this gives me "3C5" but I want to get the value "63C"

在我的例子中,我不能使用像 substring 这样的字符串工具。

最佳答案

重要的是要了解整数只是一个数字。两者之间没有区别:

int x = 0x10;
int x = 16;

两者都以具有相同值的整数结束。第一个是在源代码中写为十六进制,但它仍然表示相同的值。

现在,说到掩码,最简单的方法就是用二进制来考虑它,因为操作将按位执行。所以听起来您想要原始值的第 4-15 位,但随后移动为结果的第 0-11 位。

这最简单地表示为一个掩码,然后是一个移位:

int afterMask = (a & 0xFFF0) >> 4;

或者一个转变然后一个掩码:

int afterMask = (a >> 4) & 0xFFF;

两者都会为您提供(十进制)1596 =(十六进制)63C 的值。

在这种特殊情况下,由于您的输入在位 12+ 中没有任何内容,因此掩码是不必要的 - 但如果您想要(比如)0x1263c5 的输入仍然为您提供对应于 0x63c 的输出。

关于java - 如何使用 Java 屏蔽十六进制 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49174769/

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