繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM