public static byte[] hexStr2byte(String hexStr) { String str = "0123456789ABCDEF"; hexStr = hexStr.toUpperCase(); char[] hexs = hexStr.toCharArray(); byte[] bytes = new byte[hexStr.length() / 2]; int n; for (int i = 0; i < bytes.length; i++) { n = str.indexOf(hexs[2 * i]) * 16; n += str.indexOf(hexs[2 * i + 1]); bytes[i] = (byte) (n & 0xff); } return bytes; }
时间: 2024-04-28 21:27:23 浏览: 122
这段代码定义了一个静态方法 `hexStr2byte`,它接收一个十六进制格式的字符串 `hexStr`,并返回一个字节数组。该方法的作用是将输入的十六进制格式的字符串转换为字节数组。
下面是每一句代码的解释:
1. `public static byte[] hexStr2byte(String hexStr) {`:定义静态方法 `hexStr2byte`,它接收一个十六进制格式的字符串类型的参数 `hexStr`。
2. `String str = "0123456789ABCDEF";`:定义字符串 `str`,用于将每个十六进制字符转换为对应的字节。
3. `hexStr = hexStr.toUpperCase();`:将输入的十六进制格式的字符串转换为大写字母。
4. `char[] hexs = hexStr.toCharArray();`:将转换后的字符串转换为字符数组。
5. `byte[] bytes = new byte[hexStr.length() / 2];`:定义字节数组,用于存储转换后的字节数据。
6. `int n;`:定义一个整型变量 `n`,用于存储每个字节的十进制值。
7. `for (int i = 0; i < bytes.length; i++) {`:循环遍历字节数组,将每个十六进制格式的字符转换为对应的字节数据。
8. `n = str.indexOf(hexs[2 * i]) * 16;`:获取当前字符对应的字节的高四位的十进制值。
9. `n += str.indexOf(hexs[2 * i + 1]);`:获取当前字符对应的字节的低四位的十进制值。
10. `bytes[i] = (byte) (n & 0xff);`:将得到的高四位和低四位的值合并为一个字节,并将该字节存储到字节数组中。
11. `}`:循环结束。
12. `return bytes;`:返回转换后的字节数组。
阅读全文