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