我需要为我的应用程序提供这种int []格式,正如我在标题中所写的那样。
我从HashMap
中取出了一个用{00,00,00,00]格式填充的XML文件中的值,但我需要每个int
的{{1}} 0x
在前面。
我试图通过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);
}
返回之前。现在它有效......但我不知道它为什么会起作用:(
答案 0 :(得分:2)
在任何类型语言中,int / number值没有格式。 Java存储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)
答案 1 :(得分:1)
for(int i = 0; i < value.length; i++){
value[i] = Integer.valueOf(String.valueOf(value[i]), 16);
}
试试这个。如果你想要十六进制值。或者如果你想要十六进制字符串,你可以使用下面的代码。
Integer.toHexString(integerValue)