web-dev-qa-db-fra.com

Qu'est-ce que le paramètre radix en Java et comment fonctionne-t-il?

Je comprends que radix pour la fonction Integer.parseInt() est la base dans laquelle convertir la chaîne. La base 11 convertie avec un radix/base 16 ne devrait-elle pas être un B au lieu de 17?

Le code suivant imprime 17 selon le manuel:

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

Lorsque vous effectuez l'opération ParseInt avec le radix, le 11 base 16 est analysé comme 17, ce qui est une valeur simple. Il est ensuite imprimé en radix 10.

Tu veux:

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

Cela prend la valeur décimale 11 (n'ayant pas de base pour le moment, comme avoir "onze" pastèques (un de plus que le nombre de doigts d'une personne)) et l'imprime avec le radix 16, résultant en B.

Lorsque nous prenons une valeur int, elle est stockée en tant que base 2 dans la mémoire physique de l'ordinateur (dans presque tous les cas), mais cela n'est pas pertinent car les conversions d'analyse et de chaîne fonctionnent avec un radix arbitraire (10 par défaut).

12
Andrey Akhmetov

Cela prend en fait 11 en hexadécimal et en le convertissant en décimal. Par exemple, si vous aviez le même code mais avec "A" dans la chaîne, il afficherait 10.

5
Doorknob

Ici,

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

11 est 16 nombre basé et doit être converti à 10, c'est-à-dire décimal.

 So, integer of (11)16 = 1*16^1 +1*16^0 = 16+1 = 17
4
Jakir Hosen Khan

Pour convertir de la base 10 à la base 16, utilisez

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

La sortie sera b.

1
Abhishek K

La fonction agit à l'envers comme vous le pensez. Vous convertissez "11" en base 16 en base 10, le résultat est donc 17.

1
d4vsanchez