Why do I get the same results for both upper- and lowercase literals? For instance:
char ch1 = 'A';
char ch2 = 'a';
char ch3 = 'Z';
char ch4 = 'z';
print("ch1 -- > " + Integer.toBinaryString(Character.getNumericValue(ch1)));
print("ch2 -- > " + Integer.toBinaryString(Character.getNumericValue(ch2)));
print("ch3 -- > " + Integer.toBinaryString(Character.getNumericValue(ch3)));
print("ch4 -- > " + Integer.toBinaryString(Character.getNumericValue(ch4)));
As results I get:
ch1 -- > 1010
ch2 -- > 1010
ch3 -- > 100011
ch4 -- > 100011
And don't really see the difference between 'A' and 'a'. Even if I use character literals in UTF form (\u0041 for 'A' and \u0061 for 'a') I do get the same results.
解决方案
It's behaving exactly as documented:
The letters A-Z in their uppercase ('\u0041' through '\u005A'), lowercase ('\u0061' through '\u007A'), and full width variant ('\uFF21' through '\uFF3A' and '\uFF41' through '\uFF5A') forms have numeric values from 10 through 35.
Basically this means that when parsing hex (say), 0xfa == 0xFA, as you'd expect.
I'd only expect case to matter when using something like base64.