Interger.parseInt(String str, int radix), Long.parseLong(String str, int radix)
Sadashiv Borkar
Ranch Hand
Joined: Jun 07, 2000
Posts: 49
posted
0
Hi All, If you see the wrapper classes you will find a method called parseXX(String str, int radix) where XX is the name of the wrapper class
Now when I read the JLS I found out the following Byte.parseByte("A",27) returns 10 //Not in JLS Short.parseShort("A" 27) returns 10 //Not in JLS parseInt("Kona", 27) returns 411787 parseLong("Hazelnut", 36) returns 1356099454469L Cna anyone please clear my doubt that what is radix 27,36...As far as i know there r only following radix(10, 16, 8 ) what's the use of this radix and how does it converts the String into an integer.Or to be specific how does it convert a String (like "Kona" and "Haze1nut") to a number(whats the methodology used?)
Cindy Glass
"The Hood"
Sheriff
Joined: Sep 29, 2000
Posts: 8521
posted
0
From: http://www.utm.edu/research/primes/glossary/Radix.html We usually write numbers using a place-value system. For example, in decimal 1101 means 1.103 + 1.102 + 0.10 + 1 and in binary 1101 would mean 1.23 + 1.22 + 0.2 + 1 (= 13 in decimal). In general, a position numbering system encodes the numbers as anbn + an-1bn-1 + . . . + a2b2+ a1b+ a0 (0 < ai < b, i=0,1,2,...,n) where the integer b>1 is the radix or base. So decimal is "radix 10" and binary is "radix 2." Other common systems include octal (radix 8) and hexadecimal (radix 16, here we need to add some more digits: 'a'=10, 'b'=11, 'c'=12, 'd'=13, 'e'=14 and 'f'=15). If it is not clear for the context which radix we are using, we usually add it as a subscript. For example, (23)4 = (21)5 = (11)10 = (b)16. We can extend this to cover all reals if we allow the inclusion of a negative sign and a radix-point (decimal point): (anan-1. . . a2a1a0. a-1a-2a-3 . . . )b = anbn + an-1bn-1 + . . . + a2b2 + a1b + a0 + a-1b- 1 + a-2b-2 + a-3b-3 + . . .
"JavaRanch, where the deer and the Certified play" - David O'Meara
Cindy Glass
"The Hood"
Sheriff
Joined: Sep 29, 2000
Posts: 8521
posted
0
In other words you are telling the wrapper class what base that you want the String converted into.
Sadashiv Borkar
Ranch Hand
Joined: Jun 07, 2000
Posts: 49
posted
0
Hi Cindy, Thanx for the explanation and the link it was really useful for me.But I think u misunderstood my question.What I donot understand that how does it convert the Strings like "KONA" and "Haze1Nut" to integer value.If you see carefully that the above values are not numbers.So does it uses the ascii value of each character for converting it into an appropriate number or what does it use for that. Now if you see below that the following function gives you correct results. parseInt("Kona", 27) returns 411787 parseLong("Hazelnut", 36) returns 1356099454469L Now if I change the following radix to 10 It gives me a NumberFormatException parseInt("Kona", 10) returns 411787 parseLong("Hazelnut", 10) returns 1356099454469L So whats the reason For giving the number format exception. I understand that radiix of 10 is used for conversion odf decimal numbers . radiix of 8 is used for the conversion of Octal numbers. radiix of 16 is used for the conversion of hexadecimal numbers. Then can anyone clarify what is the use of the radiix 27 and 36 for what type of numbers are they used.Iam confused. Thanx in advance. Sada
Kourosh Keshavarzi
Ranch Hand
Joined: Oct 23, 2000
Posts: 66
posted
0
Hi Sadashiv, radix 10,8,and 16 are not the only radix you can have they are simply the more popular ones and the one you'll need most of the time. But you can have any radix you want ..,3,4,5,6,7,8,..100,...etc. If you were right a Math program like calculating pi may be you might find a use for it.
Now as for why is that that when you change the following radix to 10 It gives you a NumberFormatException: When you have radix 2 you can only use values 0 and 1 When you have radix 8 you can only use values 0 to 7 When you have radix 16 you can only use values 0 to F (15) When you have radix 27 you can only use values 0 to q (26) So when you change the radix to 10 "k", "o", "n" are not allowed. Its like using 5 with binary data. You can't.
As for how does it convert the Strings like "KONA". parseInt("Kona", 27) returns 411787 k=20, o=24, n=23, a=10 I'll use ^ to mean to the power of , not xor So: (20*(27^3)) + (24*(27^2)) + (23*(27^1)) + (10*(27^0)) = 393660 + 17496 + 621 + 10 = 411787
Hope this helped Best of luck Kourosh
Sadashiv Borkar
Ranch Hand
Joined: Jun 07, 2000
Posts: 49
posted
0
Hi Kourosh Keshavarzi, It was really a Fantastic Answer which cleared All my doubts. Thanx a Million times bye take care Sada