Character.digit()详解
java.lang.Character.digit(char ch, int radix)方法 :
在指定的基數返回字符ch的數值,如果基數是不在范圍內MIN_RADIX≤基數≤MAX_RADIX或如果該值的通道是不是一個有效的數字在指定的基數-1,則返回。
public final class Character implements java.io.Serializable, Comparable<Character> {public static final int MIN_RADIX = 2;public static final int MAX_RADIX = 36; }也就是說radix的賦值范圍2<=radix<=36,任何這個范圍外的值,返回值都為-1(這個是必要條件,下面幾種情況必須建立在此條件基礎上)
?
以下是如果至少有一個字符是一個有效的數字:
方法isDigit為true的字符和Unicode字符的十進制數值(或分解的單字符)小于指定的基數。在這種情況下的十進制數字值被返回。
參數ch為數字字符時,若參數ch小于參數radix,則返回參數ch的整數類型。否則返回-1
int digit = Character.digit('0', 2); 返回值 0int digit2 = Character.digit('9', 36); 返回值 9返回值范圍0~9
該字符是一個大寫拉丁字母'A'到'Z'和它的代碼是小于基數+'A' - 10。在這種情況下,ch - 'A'+10返回。
參數ch為大寫字母A~Z時(參考ASCII碼表,十進制取值范圍在65~90),若參數ch的十進制數小于參數(radix+55),則返回參數(ch-55)
int digit = Character.digit('A', 11); 返回值 10 int digit2 = Character.digit('Z', 36); 返回值 35此處ch參數最小是A,所以要保證不返回-1,則參數radix必須大于10(且小于等于36),也就是,radix的取值范圍11~36
結果返回值范圍在10~35
?
剩下三種情況:
字符的小寫拉丁字母'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返回。
這三種情況和上面這種情況相同,結果返回值范圍在10~35
還有一個方法,java.lang.Character.digit(int ch, int radix),參數ch取值為A~Z,a~z的十進制數,返回結果與字母相同
總結一下,?Character.digit()在取值正確的范圍下,返回值在0~35之間,返回值若是0~9之間,則參數ch必為0~9的數字字符串,返回值在10~35之間,則參數必為字母。
radix中文翻譯是基數,好像部分文檔里也翻譯為進制,總之這個方法是把數字字符串和字母(忽略大小寫)轉換成0~35之間的一個數而已
總結
以上是生活随笔為你收集整理的Character.digit()详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win7 您需要Trustedinsta
- 下一篇: VS2013+OpenCV2.4.10配