这是一个将十六进制转换为字符串的代码,但在字符串大小不超过 62 个字符之前它可以正常工作?
public static String hexToString(String hex)
{
StringBuilder output = new StringBuilder();
for (int i = 0; i < hex.length(); i+=2)
{
String str = hex.substring(i, i+2);
output.append((char)Integer.parseInt(str, 16));
}
return(output.toString());
}
java.lang.StringIndexOutOfBoundsException: String index out of range: 62 at java.lang.String.substring(Unknown Source) at HEX.hexToString(HEX.java:36) at HEX.main(HEX.java:56)
最佳答案
i+2
在String str = hex.substring(i, i+2);
是问题所在。即使i < hex.length()
, i+2
如果 hex.length()
太大很奇怪。
关于java.lang.StringIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12317716/