Convertir int en char en Java

Voici un extrait de code,

int a = 1; char b = (char) a; System.out.println(b); 

Mais ce que j’obtiens, c’est une sortie vide.

 int a = '1'; char b = (char) a; System.out.println(b); 

Je vais obtenir 1 comme sortie.

Quelqu’un peut-il expliquer cela? Et si je veux convertir un int en un caractère comme dans le premier extrait, que dois-je faire?

 int a = 1; char b = (char) a; System.out.println(b); 

imprimera le caractère avec la valeur ascii 1 (caractère de début de titre, qui n’est pas imprimable).

 int a = '1'; char b = (char) a; System.out.println(b); 

imprimera le caractère avec la valeur ascii 49 (un correspondant à «1»)

Si vous voulez convertir un chiffre (0-9), vous pouvez lui append 48 et le convertir, ou quelque chose comme Character.forDigit(a, 10); .

Si vous voulez convertir un int en valeur ascii, vous pouvez utiliser Character.toChars(48) par exemple.

Ma réponse est similaire à la réponse de jh314 mais je vais vous expliquer un peu plus en profondeur.

Ce que vous devez faire dans ce cas est:

 int a = 1; char b = (char)(a + '0'); System.out.println(b); 

Ici, nous avons utilisé ‘0’ car les caractères sont réellement représentés par des valeurs ASCII. ‘0’ est un caractère représenté par la valeur 48.

Nous avons tapé (a + '0') et pour les append, Java a converti ‘0’ à sa valeur ASCII qui est 48 et a est 1, donc la sum est 49. Alors ce que nous avons fait est:

 (char)(49) 

Nous avons lancé int pour char . L’équivalent ASCII de 49 est ‘1’. Vous pouvez convertir n’importe quel chiffre en char de cette façon et c’est un moyen plus intelligent et plus .toSsortingng() que d’utiliser la méthode .toSsortingng() , puis en soustrayant le chiffre par la méthode .charAt() .

Il semble que vous cherchiez la méthode Character.forDigit :

 final int RADIX = 10; int i = 4; char ch = Character.forDigit(i, RADIX); System.out.println(ch); // Prints '4' 

Il existe également une méthode permettant de convertir un caractère char en int:

 int i2 = Character.digit(ch, RADIX); System.out.println(i2); // Prints '4' 

Notez qu’en modifiant le RADIX vous pouvez également prendre en charge les valeurs hexadécimales (radix 16) et toutes les bases allant jusqu’à 36 (ou le Character.MAX_RADIX aussi appelé).

 int a = 1; char b = (char) a; System.out.println(b); 

hola, eh bien je suis passé par le même problème mais ce que j’ai fait était le code suivant.

 int a = 1 char b = Integer.toSsortingng(a).charAt(0); System.out.println(b); 

Avec cela, vous obtenez la valeur décimale en tant que type de caractère. J’ai utilisé charAt () avec l’index 0 car la seule valeur dans cette chaîne est ‘a’ et comme vous le savez, la position de ‘a’ dans cette chaîne commence à 0.

Désolé si mon anglais n’est pas bien expliqué, j’espère que cela vous aidera.

Personne n’a répondu à la vraie “question” ici: vous convertissez int en char correctement; dans la table ASCII, une valeur décimale de 01 correspond à “début de titre”, un caractère non imprimable. Essayez de rechercher une table ASCII et de convertir une valeur int comprise entre 33 et 7E; cela vous donnera des personnages à regarder.

Si nous parlons de types de classe – pas de primitives, l’astuce suivante doit être faite:

 Integer someInt; Character someChar; someChar = (char)Integer.parseInt(Ssortingng.valueOf(someInt); 

Assurez-vous que la valeur entière est la valeur ASCII d’un alphabet / caractère.

Sinon, faites-le.

 for eg if int i=1 

puis ajoutez 64 pour qu’il devienne 65 = valeur ASCII de ‘A’ alors utilisez

 char x = (char)i; print x // 'A' will be printed 

En java, un caractère est un int. Votre premier extrait imprime le caractère correspondant à la valeur 1 dans le schéma de codage de caractères par défaut (qui est probablement Unicode). Le caractère Unicode U + 0001 est un caractère non imprimable, ce qui explique pourquoi vous ne voyez aucune sortie.

Si vous souhaitez imprimer le caractère “1”, vous pouvez rechercher la valeur “1” dans le schéma d’encodage que vous utilisez. Dans Unicode, il s’agit de 49 (identique à ASCII). Mais cela ne fonctionnera que pour les chiffres 0-9.

Vous devriez peut-être utiliser une chaîne plutôt qu’un caractère et utiliser la toSsortingng() intégrée de Java:

 int a = 1; Ssortingng b = toSsortingng(a); System.out.println(b); 

Cela fonctionnera quel que soit le codage de votre système et fonctionnera pour les nombres à plusieurs chiffres.

À chaque fois que vous tapez un entier en caractères, il renverra la valeur ascii de ce entier (une fois passée dans la table ascii pour mieux comprendre)

  int a=68; char b=(char)a; System.out.println(b);//it will return ascii value of 68 //output- D 

Si vous voulez imprimer des caractères ASCII basés sur leur code ASCII et ne voulez pas aller au-delà (comme les caractères Unicode), vous pouvez définir votre variable en tant qu’octet, puis utiliser la conversion (char). c’est à dire:

 public static void main(Ssortingng[] args) { byte b = 65; for (byte i=b; i<=b+25; i++) { System.out.print((char)i + ", "); } 

BTW, le code ascii pour la lettre 'A' est 65

 public class Ssortingng_Store_In_Array { public static void main(Ssortingng[] args) { System.out.println(" Q.37 Can you store ssortingng in array of integers. Try it."); Ssortingng str="I am Akash"; int arr[]=new int[str.length()]; char chArr[]=str.toCharArray(); char ch; for(int i=0;i 

Si vous voulez convertir un caractère en son entier correspondant, vous pouvez faire quelque chose comme ceci:

 int a = (int) 'a'; char b = (char) a; System.out.println(b); 

Cela se produit car en ASCII, certains éléments ne peuvent pas être imprimés normalement.

Par exemple, les nombres 97 à 122 sont des entiers correspondant aux lettres minuscules a à z.