繁体   English   中英

将整数转换为十六进制Java

[英]Converting Integer To Hex Java

我的应用程式需要标题中所写的int []格式。

我正在从HashMap获取值,该HashMap是使用[00,00,00,00]格式填充到XML文件中的,但是对于每个前面有0x int ,我都需要它。

我试图通过for循环对其进行“转换”:

for(int i = 0; i < value.length; i++){
        value[i] = "0x"  + value[i];
    }

但是我不能以这种方式从String转换为int

然后,我尝试直接在XML文件中进行更改,但是随后我的应用因NPE崩溃。

现在,我想知道是否可以解决我的问题。

编辑:

进一步说明:

我之前尝试过此方法,但没有成功:

public int[] getValue(Map map, String key) {
    Map keyMap = map;
    int[] value = {};

    @SuppressWarnings("rawtypes")
    Iterator iter = keyMap.entrySet().iterator();

    while (iter.hasNext()) {
        @SuppressWarnings("rawtypes")
        Map.Entry mEntry = (Map.Entry) iter.next();
        if (mEntry.getKey().equals(key)) {
            value = (int[]) mEntry.getValue();
        }
    }
    return value;
}

然后我尝试了答案之一并添加了

for(int i = 0; i < value.length; i++){
        value[i] = Integer.valueOf(String.valueOf(value[i]), 16);
    }

返回之前。 现在它可以工作了...但是我不知道为什么它可以工作:(

在任何类型的语言中,int / number值都没有格式。 Java使用2的补码将int值存储为4个字节的方式,因此0或0x0或00(八进制)或0b是相同的值:二进制字中包含32个零。

第二编辑:

我认为您的工程过度。 您应该使用的是

Map<String,int[]> map;

然后,如果您编写map.get(key),您将获得所需的内容。

新的解释:以前的解决方案有效,因为当您读取XML时,将值存储为十进制值:

String s="80";
int i= Integer.valueOf(s); //it stores 80 (decimal value)
int value= Integer.valueOf(String.valueOf(i),16); //It stores 128, or 0x80 (hex value)
for(int i = 0; i < value.length; i++){
    value[i] = Integer.valueOf(String.valueOf(value[i]), 16);
}

尝试这个。 如果要十六进制值。 或者,如果您想要十六进制字符串,则可以使用以下代码。

Integer.toHexString(integerValue)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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