This week's book giveaway is in the Kotlin forum.We're giving away four copies of Kotlin in Action and have Dmitry Jemerov & Svetlana Isakova on-line!See this thread for details.
Win a copy of Kotlin in Action this week in the Kotlin forum!
programming forums Java Java JSRs Mobile Certification Databases Caching Books Engineering OS Languages Frameworks Products This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
Sheriffs:
Saloon Keepers:
Bartenders:

Ranch Hand
Posts: 49
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
Posts: 8521
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 + . . .

Cindy Glass
"The Hood"
Sheriff
Posts: 8521
In other words you are telling the wrapper class what base that you want the String converted into.

Ranch Hand
Posts: 49
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.
Then can anyone clarify what is the use of the radiix 27 and 36
for what type of numbers are they used.Iam confused.

Kourosh Keshavarzi
Ranch Hand
Posts: 66
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