gpt4 book ai didi

java - 在 Java 中将十六进制字符串转换为字节数组时出现错误

转载 作者:行者123 更新时间:2023-12-02 09:49:55 25 4
gpt4 key购买 nike

我正在寻找一种将表示十六进制值的字符串转换为字节数组的方法。此代码非常适合偶数字符串长度,但不适用于奇数字符串长度。如果字符串长度是奇数,那么我会得到 java.lang.StringIndexOutOfBoundsException。请帮忙。

public byte[] hexStringToByteArray(String s) {
byte[] data = null;
if(! s.equals("")){
int len = s.length();
data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i+1), 16));
}
}
return data;
}

最佳答案

你的 for 循环表示继续循环 while i < len这允许 i 成为循环中字符串的最后一个索引,导致 s.charAt(i+1)访问不存在的字节。

将循环条件更改为 i < len-1i+1 < len .

关于java - 在 Java 中将十六进制字符串转换为字节数组时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56392415/

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