gpt4 book ai didi

java - java将String(FF FF FF FF FF FF FF FF FF)转换为int数组

转载 作者:行者123 更新时间:2023-12-01 23:12:13 26 4
gpt4 key购买 nike

我正在解析一个 XML 文件,其中包含一些条目,如下所示: <control key="test">FF FF FF FF FF FF FF FF</control>

我将它们保存到 HashMap现在我想转换 String我进入int[] .

但我不知道该怎么做。我试图用这个来解析它:Interger.parseInt(mEntry.getValue().toString(), 16); ,但失败并出现错误 NumberFormatExceptoin: Invalid int: "FF FF FF FF FF FF FF FF"

我用谷歌搜索了我的问题,但没有找到任何解决方案。有什么办法可以完成这件事吗?也许已经将其保存在 Hashmap 中作为int[]

这里是解析代码:

public static Map<String, String> paramListConf1(Context c, int listResID) {
Map<String, String> map = null;
XmlResourceParser parser = c.getResources().getXml(listResID);

String key = "", value = "";

try {
int eventType = parser.getEventType();

while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_DOCUMENT) {
} else if (eventType == XmlPullParser.START_TAG) {
if (parser.getName().equals("map")) {
boolean isLinked = parser.getAttributeBooleanValue(
null, "linked", false);

map = isLinked ? new LinkedHashMap<String, String>()
: new HashMap<String, String>();
} else if (parser.getName().equals("windowcontrol")) {
key = parser.getAttributeValue(null, "key");

if (null == key) {
parser.close();
return null;
}
}
} else if (eventType == XmlPullParser.TEXT) {
if (null != key) {
value = parser.getText();
}
} else if (eventType == XmlPullParser.END_TAG) {
if (parser.getName().equals("windowcontrol")) {
map.put(key, value);
key = null;
value = null;
}
}
eventType = parser.next();
}
} catch (Exception e) {
e.printStackTrace();
return null;
}

return map;
}

XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<map linked="false">
<message>
<window>
<control key="test1">FF FF FF FF FF FF FF FF</control >
<control key="test2">EE EE EE EE EE EE EE EE</control >
<control key="test3">DD DD DD DD DD DD DD DD</control >
<control key="test4">00 00 00 00 00 00 00 00</control >
</window>

</message>
</map>

以及实现:

public void getXMLResourceInput() {
@SuppressWarnings("rawtypes")
Map keyMap = ResourceUtils.paramListConf1(WindowControlActivity.this, R.xml.config1);

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

while(iter.hasNext()) {
@SuppressWarnings("rawtypes")
Map.Entry mEntry = (Map.Entry) iter.next();
Integer.parseInt(mEntry.getValue().toString, 16);
}
}

最佳答案

我假设您希望字符串“FF FF FF FF FF FF FF FF FF”作为整数数组而不是单个整数,因为它对于 int 来说太大,而 -1 那么长。

    String hexString = "FF FF FF FF FF FF FF FF"; 
String[] hexNumbers = hexString.split(" "); //split the string
int[] ints = new int[hexNumbers.length];

for(int i = 0; i<hexNumbers.length; i++) {
ints[i] = Integer.parseInt(hexNumbers[i], 16); //convert from hexString to int
}

for(int i = 0; i<ints.length; i++) {
System.out.println(ints[i]);
}

输出:255255255255255255255255

导致 NumberFormatException 的原因有两个。首先,字符串中有空格,其次,如果删除它们,它是“FFFFFFFFFFFFFFFF”,远大于 2^31-1(正 int 的最大大小)。

关于java - java将String(FF FF FF FF FF FF FF FF FF)转换为int数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21757309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com