最近在搜NFC的时候,无意中发现了这个方法,之前开发中一直没有遇到过,感觉很 好奇.
ava.lang.Character.digit()方法用法实例教程-在指定的基数返回字符ch的数值。
java.lang.Character.digit(char ch, int radix)方法 在指定的基数返回字符ch的数值。
如果基数是不在范围内MIN_RADIX≤基数≤MAX_RADIX或如果该值的通道是不是一个有效的数字在指定的基数-1,则返回。以下是如果至少有一个字符是一个有效的数字:
-
方法isDigit为true的字符和Unicode字符的十进制数值(或分解的单字符)小于指定的基数。在这种情况下的十进制数字值被返回。
-
该字符是一个大写拉丁字母'A'到'Z'和它的代码是小于基数+'A' - 10。在这种情况下,ch - 'A'+10返回。
-
字符的小写拉丁字母'a'到'z'和它的代码小于radix+'A' - 10。在这种情况下,ch - 'a'+10返回。
-
字符是一个全角大写拉丁字母A('\ uFF21')到Z('\ uFF3A“)和它的代码小于radix+'\ uFF21” - 10。在这种情况下,ch - '\ uFF21'+ 10返回。
-
该字符是一个小写拉丁字母的全角('\ uFF41')到Z('\ uFF5A“),且它的代码小于radix+'\ uFF41” - 10。在这种情况下,ch - '\ uFF41'+10返回。
以下是java.lang.Character.digit()方法的声明
public
static
int digit(char
ch,
int radix)
其中:
1.ch - the character to be converted(要转换的字符)
2.radix - the radix(基数)
返回值
此方法返回由指定基数中的字符表示的数值。异常:NA
运用的实际场合,有把一个拼接的16进制的String nfc 帧格式,转化为byte[]数组,需要没两位作为一个byte 计算出他的对应的byte值.
public byte[] stringToBytes(String s) {
int len = s.length();
byte[] 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;
}
参考文档:
1.http://www.tuicool.com/articles/JzIfYza