Character.forDigit始终返回null

时间:2014-09-12 09:35:16

标签: java

鉴于一个角色,我打算知道它是否是十六进制字符。从各种论坛,我知道我们也可以从Integer课程中实现它。但是想知道下面的代码有什么问题。

Character.forDigit('C',16)

根据documentation,对于上面的代码,如果它不是有效的十六进制字符,则返回空字符('\u0000')。请指出出了什么问题。基数错了吗?我用一段代码验证了:

if(Character.forDigit('C',16) == '\u0000') {
    System.out.println("Invalid Character");
}

4 个答案:

答案 0 :(得分:1)

不,你使用它的方式不正确 试试这个:
Character.forDigit(12,16)
你会看到什么是错的。

另见:

Character.forDigit(int,int)

答案 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");
}