[英]Convert Java String hexadecimal number to int hexadecimal number
我需要弄清楚,如何设置六进制数0xffff ,它在动态下面的代码中用于按位AND。
int offsetData = address & 0xffff;
例如,我需要这样的东西:
int offsetData = address & myHexaValue;
我有一个十进制int值,我需要以十六进制格式而不是myHexaValue 。
这是我现在的状态。
int decimalShift = 16*8;
String myHexaValueString = Integer.toHexString(decimalShift);
现在..我可以将我的String hexa数转换为int hexa数,这样我就可以将结果放入myHexaValue了吗?
你不需要转换它。 没有十六进制数这样的东西。 以十六进制写的数字是以基数16表示法编号的数字。 我们通常使用基数10表示法,因此我们有0到9的数字,但是以十六进制表示法,你有0到F的数字。所以只需做一个操作:
int offsetData = address & decimalShift;
编辑:只获得低16位使用掩码。 0xffff并执行&操作,高16位将设置为0,低16位将保持不变。 所以:
int offsetData = address & decimalShift & 0xffff;
EDIT2:要获得任意数字(0,...,31)位的掩码,您可以使用此功能:
private static int getMask(int numOfOnes) {
int i = 0x80000000;
i = i>>(32-numOfOnes-1);
i = ~i;
return i;
}
Pauls说明:“使用>>进行位移”在移位之前用MSB的值填充最重要的位,因此在此代码中,除了numOfOnes最低位之外的所有位都用1填充,之后数字被反转。
使用Integer.parseInt()
,指定基数为16
:
int number = Integer.parseInt(myHexaNumber, 16);
数字不是“十六进制”或“十进制”。 这只是因为懒惰而使用的不精确拼写。 数字表示十进制或十六进制是精确的。 没有必要将int
从十进制转换为十六进制。 事实上,无论您在代码中使用何种符号,它们都以二进制格式存储。 符号相关的唯一点是用户交互或编码期间,如输入和输出数字,或指定代码中的常量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.