Convertir en int en char en java
Ci-dessous est un extrait de code,
int a = 1;
char b = (char) a;
System.out.println(b);
Mais ce que je reçois est sortie vide.
int a = '1';
char b = (char) a;
System.out.println(b);
Je vais obtenir 1 comme ma sortie.
Quelqu'un peut-il expliquer cela? Et si je veux convertir un int en char comme dans le premier extrait, que dois-je faire?
- "Convertir un int en char?" Peut-être
b = (char)('0' + a)
mais seulement pour0 <= a <= 9
. - Valeur décimale 01 est un non-impression de caractères; qu'il fonctionne correctement.
Vous devez vous connecter pour publier un commentaire.
permet d'imprimer le char avec la valeur ascii 1 (début de la rubrique char, ce qui n'est pas imprimable).
permet d'imprimer le char avec la valeur ascii 49 (celui correspondant à '1')
Si vous voulez convertir à un chiffre (0-9), vous pouvez ajouter de 48 et de fonte, ou quelque chose comme
Character.forDigit(a, 10);
.Si vous voulez convertir un
int
comme en valeur ascii, vous pouvez utiliserCharacter.toChars(48)
par exemple.System.out.println('b'+3);
comment je peux obtenirb3
au lieu101
avec l'aide println ? toute autre façon au lieu de printf?Character.toChars
exploite des points de code Unicode, pas de valeurs ASCII. Vous obtenez le même (pour BMP uniquement) si vous venez de cast en int en char.Ma réponse est similaire à jh314 de répondre, mais je vais vous expliquer un peu plus.
Ce que vous devez faire dans ce cas est:
Ici, nous avons utilisé '0', car les caractères sont représentés par des valeurs ASCII. "0" est un char et représenté par la valeur de 48.
Nous avons tapé
(a + '0')
et afin d'ajouter ces éléments, Java converti '0' à sa valeur ASCII qui est de 48 et un est 1 de sorte que la somme de 49. Alors ce que nous avons fait est:Nous avons coulé
int
àchar
. ASCII équivalent de 49 est '1'. Vous pouvez convertir n'importe quel chiffre en char de cette façon, et il est plus intelligent et le meilleur moyen que d'utiliser.toString()
méthode, puis en soustrayant les chiffres par.charAt()
méthode.Il semble que vous êtes à la recherche pour le
Character.forDigit
méthode:Il y a aussi une méthode qui permet de convertir à partir d'un char int:
Note que la modification de la
RADIX
vous pouvez également soutenir l'hexadécimal (base 16) et radix jusqu'à 36 (ouCharacter.MAX_RADIX
comme il est également connu comme).65
imprimeA
? Parce que ma réponse ici imprime le comportement attendu pour les besoins de cette question. Voir ideone.com/09LAFRhola, eh bien, je suis passé par le même problème, mais ce que j'ai fait le code suivant.
Avec cela, vous obtenez la valeur décimale d'un type char. J'ai utilisé charAt() avec l'index 0 parce que 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 qu'elle vous aide.
Personne n'a répondu à la vraie "question" ici: vous ÊTES à la conversion de int en char correctement; dans la table ASCII décimal de la valeur de 01 est le "début de l'en-tête", un caractère non-imprimable. Essayez de regarder un tableau ASCII et la conversion d'un int valeur comprise entre 33 et 7E; qui va vous donner des caractères à regarder.
char
est un code UTF-16 de l'unité. 68 comme un code UTF-16 unité est la seule unité de code nécessaires pour représenter l'Unicode codepoint U+0044. Système.out va changer l'encodage de texte à l'encodage par défaut (sans doute correspondance le terminal/console le programme est exécuté). println prend un char et tente de le coder. Depuis le char est un codepoint, il peut essayer. Depuis U+0044 est un personnage dans presque tous les jeux de caractères, il devrait y avoir réussi à transmettre au terminal ungarbled. Rien à voir avec l'ASCII.Si nous parlons de types de classe - pas de primitives, l'astuce suivante doit être faite:
En ASCII, tous les caractères ont leur propre numéro. Et le caractère '0' 48 pour les décimales, " 1 " 49, et ainsi de suite. Donc, si
En java un char est un int. Votre premier extrait de code affiche le caractère correspondant à la valeur de 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 non-impression de caractères, c'est pourquoi vous ne verrez pas de sortie.
Si vous voulez imprimer le caractère '1', vous pouvez consulter la valeur de '1' dans le schéma de codage que vous utilisez. En Unicode, c'est 49 (ASCII). Mais cela ne fonctionnera que pour les chiffres de 0 à 9.
Vous pourriez être mieux à l'aide d'une Chaîne et non un char, et à l'aide de Java intégré dans
toString()
méthode:Cela fonctionne quel que soit votre système d'encodage et de travail pour les nombres à plusieurs chiffres.
si vous souhaitez imprimer des caractères ascii en fonction de leur code ascii et ne veulent pas aller au-delà (comme les caractères unicode), vous pouvez définir la variable comme un octet, et ensuite utiliser l' (char) convertir. c'est à dire:
BTW, le code ascii de la lettre 'A' est de 65
Assurez-vous que la valeur de l'entier est la valeur ASCII d'un alphabet caractère/.
Si non, alors le faire.
puis ajouter 64 de sorte qu'il devient 65 = valeur ASCII de 'A'
Ensuite, utilisez
de l'espoir ,il aidera au moins quelque chose de
Si vous voulez convertir un caractère correspondant à son entier, vous pouvez faire quelque chose comme ceci:
Cela se produit parce que en ASCII, il existe certains éléments qui ne peuvent pas être imprimés normalement.
Par exemple, les numéros de 97 à 122 sont des entiers correspondants à des lettres minuscules de a à z.