character.digit()用法
时间: 2023-04-29 13:00:04 浏览: 148
character.digit()是Python中字符串方法之一,用于判断一个字符是否为数字,并返回对应的数字值。如果字符是数字,则返回该数字的整数值;如果不是数字,则返回-1。例如,字符'5'的数字值为5,字符'a'的数字值为-1。该方法的语法如下:
character.digit()
其中,character是要判断的字符。
相关问题
public static byte[] stringToHexByteArray(String input) { int len = input.length(); byte[] data = new byte[len / 2]; for (int i = 0; i < len; i += 2) { data[i / 2] = (byte) ((Character.digit(input.charAt(i), 16) << 4) + Character.digit(input.charAt(i+1), 16)); } return data; } 使用这个报错了
这个方法的作用是将一个十六进制字符串转换为字节数组。根据你提供的代码,我猜测你遇到了 `StringIndexOutOfBoundsException` 异常,这个异常是因为当输入字符串长度为奇数时,你在循环中访问了一个不存在的字符。比如当输入字符串为 "12" 时,循环只会执行一次,但是在第二次循环时,`input.charAt(i+1)` 就会抛出 `StringIndexOutOfBoundsException` 异常,因为字符串中只有一个字符而你却试图访问第二个字符。
为了解决这个问题,你需要在循环中对输入字符串的长度进行判断,只有当字符串长度为偶数时才进行循环,代码如下:
```java
public static byte[] stringToHexByteArray(String input) {
int len = input.length();
if (len % 2 != 0) {
throw new IllegalArgumentException("Input string must have an even number of characters");
}
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(input.charAt(i), 16) << 4)
+ Character.digit(input.charAt(i+1), 16));
}
return data;
}
```
这样做可以确保输入字符串的长度为偶数,从而避免访问不存在的字符。此外,当输入字符串长度为奇数时,我在代码中抛出了一个 `IllegalArgumentException` 异常,这样可以提供更好的错误信息。
Character.digit("7.00".charAt(i++),radix) 7报错
`Character.digit(char ch, int radix)` 方法的第一个参数必须是表示有效数字的字符,例如 '0' 到 '9','a' 到 'z' 或 'A' 到 'Z' 等。
而在 `"7.00".charAt(i++)` 中,i 的初始值为 0,执行完该语句后,i 的值变为 1,即 `"7.00".charAt(0)` 返回字符 '7',而不是有效数字。
因此,`Character.digit("7.00".charAt(i++), radix)` 的返回值为 -1,表示字符 '7' 不是指定基数 radix 中的有效数字。
如果要将字符串 "7.00" 中的数字转换为整数,可以使用 Integer.parseInt(String s) 方法,例如:
```
int num = Integer.parseInt("7.00");
```
阅读全文