鉴于一个角色,我打算知道它是否是十六进制字符。从各种论坛,我知道我们也可以从Integer
课程中实现它。但是想知道下面的代码有什么问题。
Character.forDigit('C',16)
根据documentation,对于上面的代码,如果它不是有效的十六进制字符,则返回空字符('\u0000'
)。请指出出了什么问题。基数错了吗?我用一段代码验证了:
if(Character.forDigit('C',16) == '\u0000') {
System.out.println("Invalid Character");
}
答案 0 :(得分:1)
答案 1 :(得分:1)
Character.forDigit(int, int)
接受一个int并返回相应的char,而不是相反,就像你正在做的那样。
答案 2 :(得分:1)
您正在寻找的方法是Character.digit(char ch, int radix)。
if (Character.digit('C',16) == -1) {
System.out.println("Invalid Character");
}
Character.forDigit()
反过来,就像其他人已经指出的那样。
答案 3 :(得分:1)
十六进制字符在Java中表示' 0x'字首。因此,您的验证码始终返回为"无效字符"。
尝试使用前缀。 例如:
if(Character.forDigit(0xC,16)=='\u0000'){
System.out.println("Invalid Character");
}