2013-07-08 13 views
14

Rozumiem, że podstawa dla funkcji Integer.parseInt() jest podstawą do przekonwertowania ciągu znaków na. Czy nie powinno się przekształcać 11 baz 10 w podstawę/podstawę 16 na B zamiast na 17?Co to jest parametr radix w Javie i jak to działa?

następujące wydruki Kod 17 według podręcznika:

public class Test { 
    public static void main(String[] args) { 
    System.out.println(Integer.parseInt("11", 16)); 
    } 
} 
+1

Na odwrót. Pytasz, czy interpretować "11" w bazie-16. tj. 1 * 16 + 1. –

+0

Dzięki za wyjaśnienie –

+0

@MinhTran Proszę zaznaczyć odpowiedź, która pomogła Ci najbardziej. – hexafraction

Odpowiedz

10

Podczas wykonywania operacji ParseInt z Radix, 11 podstawy 16 jest analizowany jako 17, która jest prosta wartość. Następnie jest on drukowany jako Radix 10.

Chcecie:

System.out.println(Integer.toString(11, 16)); 

ta przyjmuje wartość dziesiętną 11 (nie mający podstawę w tej chwili, jak o „jedenaście” arbuzy (jeden więcej niż liczba palce osoby)) i wypisuje ją na podstawie 16, co daje B.

Gdy przyjmujemy wartość int, jest ona przechowywana jako baza 2 w pamięci fizycznej komputera (prawie we wszystkich przypadkach), ale nie ma to znaczenia, ponieważ przetwarzanie i ściąganie konwersji działa z dowolną podstawą (domyślnie 10).

5

To faktycznie biorąc 11 w hex i konwertowanie go na dziesiętne. Na przykład, jeśli masz w kodzie taki sam kod, ale z "A", wyświetli się 10.

1

Funkcja działa wstecz, jak myślisz. Konwertowanie "11" w bazie 16 na podstawie 10, więc wynik jest 17.

3

Tutaj

public class Test { 
     public static void main(String[] args) { 
     System.out.println(Integer.parseInt("11", 16)); 
    } 
} 

jest numer oparty i powinny być przekształcone w 10 tj przecinku.

So, integer of (11)16 = 1*16^1 +1*16^0 = 16+1 = 17 
1

do konwersji od podstawy 10 do podstawy 16 Wykorzystanie

System.out.println(Integer.toString(11, 16)); 

wyjściowy będzie B.