ce n'est pas un double comme mentionné ci-dessus. Ce n'est pas une conversion d'entier mais de char (ascii)
Chathuranga Chandrasekara
11
Pas un double de "Comment convertir de int en chaîne?" ... de toute façon, FWIW, ASCII est seulement 7 bits avec des valeurs [0, 127] ;-)
1
@phooji Je pense que ce post sais comment convertir 1 -> "1" etc '
Belgi
1
@pst - c'est étendu ASII ;-)
Belgi
3
@Belgi - vous devrez indiquer explicitement votre encodage si vous souhaitez transcoder correctement les valeurs 128-255. Le terme «ASCII étendu» n'a pas de sens.
Pour les plates-formes basées sur MIDP 2 / CLDC 1.1 (qui n'en ont pas Character.toString(char), stackoverflow.com/a/6210938/923560 fournit des solutions supplémentaires.
Abdull
Quelle est la raison de la (char)désignation? En d'autres termes, pourquoi ne puis-je pas simplement mettre Character.toString(i);? (Java noob)
Adam Hughes
1
Notez que cela ne fonctionnera pas pour le Integertype, vous obtiendrez une erreur "java.lang.Integer ne peut pas être converti en java.lang.Character". Ajouter un casting au intpremier, par exemple: Character.toString((char)(int)myInteger);
gbmhunter
1
Les ivaleurs (0-255) proviendraient du jeu de caractères ISO-8859-1. (Le demandeur a refusé d'identifier quel "ASCII étendu" [terme vague] était recherché, sauf en acceptant cette réponse.)
En supposant que l'entier est, comme vous le dites, entre 0 et 255, vous obtiendrez un tableau avec un seul caractère en retour Character.toChars, qui deviendra une chaîne à un seul caractère une fois passé à String.valueOf.
L'utilisation Character.toCharsest préférable aux méthodes impliquant un transtypage de intvers char(c'est- à -dire (char) i) pour un certain nombre de raisons, y compris qui Character.toCharslèvera un IllegalArgumentExceptionsi vous ne parvenez pas à valider correctement l'entier tandis que le transtypage avalera l'erreur (selon la spécification des conversions primitives restrictives ), donnant potentiellement une sortie autre que ce que vous vouliez.
En supposant que l'entier est compris entre 0 et 255 (comme vous le dites ... et comme le précise la question), il est inutile et sous-optimal à utiliser toChars.
Stephen C
5
Vous avez tout à fait raison de dire que quelque chose comme Character.toString((char) i)est plus rapide que String.valueOf(Character.toChars(i)). L'exécution d'un test rapide de conversion de 1 000 000 d'entiers aléatoires dans la plage donnée (100 fois, pour être sûr) sur ma machine donne un temps moyen de 153,07 nanosecondes contre 862,39 nanosecondes. Cependant, dans toute application intéressante, il y aura des choses bien plus importantes à optimiser. La valeur ajoutée de la manipulation sûre et déterministe et de la facilité d'expansion en dehors de la plage de [0,255] si elle est requise l'emporte sur le moindre impact sur les performances.
Vous vous retrouverez avec une chaîne de longueur un, dont le caractère unique a le code (ASCII) 65. En Java, les caractères sont des types de données numériques.
Réponses:
Character.toString ((char) i);
la source
Character.toString(char)
, stackoverflow.com/a/6210938/923560 fournit des solutions supplémentaires.(char)
désignation? En d'autres termes, pourquoi ne puis-je pas simplement mettreCharacter.toString(i);
? (Java noob)Integer
type, vous obtiendrez une erreur "java.lang.Integer ne peut pas être converti en java.lang.Character". Ajouter un casting auint
premier, par exemple:Character.toString((char)(int)myInteger);
i
valeurs (0-255) proviendraient du jeu de caractères ISO-8859-1. (Le demandeur a refusé d'identifier quel "ASCII étendu" [terme vague] était recherché, sauf en acceptant cette réponse.)System.out.println((char)65);
imprimerait "A"la source
(char) 65
pour savoir de quel personnage il s'agit.String.valueOf
(
Character.toChars(int)
)
En supposant que l'entier est, comme vous le dites, entre 0 et 255, vous obtiendrez un tableau avec un seul caractère en retour
Character.toChars
, qui deviendra une chaîne à un seul caractère une fois passé àString.valueOf
.L'utilisation
Character.toChars
est préférable aux méthodes impliquant un transtypage deint
verschar
(c'est- à -dire(char) i
) pour un certain nombre de raisons, y compris quiCharacter.toChars
lèvera unIllegalArgumentException
si vous ne parvenez pas à valider correctement l'entier tandis que le transtypage avalera l'erreur (selon la spécification des conversions primitives restrictives ), donnant potentiellement une sortie autre que ce que vous vouliez.la source
toChars
.Character.toString((char) i)
est plus rapide queString.valueOf(Character.toChars(i))
. L'exécution d'un test rapide de conversion de 1 000 000 d'entiers aléatoires dans la plage donnée (100 fois, pour être sûr) sur ma machine donne un temps moyen de 153,07 nanosecondes contre 862,39 nanosecondes. Cependant, dans toute application intéressante, il y aura des choses bien plus importantes à optimiser. La valeur ajoutée de la manipulation sûre et déterministe et de la facilité d'expansion en dehors de la plage de [0,255] si elle est requise l'emporte sur le moindre impact sur les performances.c'est une solution simple
la source
Vous vous retrouverez avec une chaîne de longueur un, dont le caractère unique a le code (ASCII) 65. En Java, les caractères sont des types de données numériques.
la source
On peut itérer de a à z comme ça
la source
Une façon plus simple de faire de même:
Tapez cast entier en caractère,
int n
soit l'entier, puis:la source
la source
Pourquoi ne pas le simplifier à une méthode qui renvoie le caractère ascii?
la source
Voici un exemple, qui montre qu'en convertissant un int en char, on peut déterminer le caractère correspondant en code ASCII.
la source
réponse supérieure seulement près de résoudre le problème. voici votre réponse:
Integer.decode (Character.toString (char c));
la source