Comment puis-je convertir, en Java, le code ASCII (qui est un entier de la plage [0, 255]) en son caractère ASCII correspondant?
Par exemple:
65 -> "A"
102 -> "f"
Comment puis-je convertir, en Java, le code ASCII (qui est un entier de la plage [0, 255]) en son caractère ASCII correspondant?
Par exemple:
65 -> "A"
102 -> "f"
Réponses:
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 mettre Character.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 au int
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"
(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 de int
vers char
(c'est- à -dire (char) i
) pour un certain nombre de raisons, y compris qui Character.toChars
lèvera un IllegalArgumentException
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.
toChars
.
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.
new String(new char[] { 65 })
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.
On peut itérer de a à z comme ça
int asciiForLowerA = 97;
int asciiForLowerZ = 122;
for(int asciiCode = asciiForLowerA; asciiCode <= asciiForLowerZ; asciiCode++){
search(sCurrentLine, searchKey + Character.toString ((char) asciiCode));
}
Une façon plus simple de faire de même:
Tapez cast entier en caractère, int n
soit l'entier, puis:
Char c=(char)n;
System.out.print(c)//char c will store the converted value.
for (int i = 0; i < 256; i++) {
System.out.println(i + " -> " + (char) i);
}
char lowercase = 'f';
int offset = (int) 'a' - (int) 'A';
char uppercase = (char) ((int) lowercase - offset);
System.out.println("The uppercase letter is " + uppercase);
String numberString = JOptionPane.showInputDialog(null,
"Enter an ASCII code:",
"ASCII conversion", JOptionPane.QUESTION_MESSAGE);
int code = (int) numberString.charAt(0);
System.out.println("The character for ASCII code "
+ code + " is " + (char) code);
Pourquoi ne pas le simplifier à une méthode qui renvoie le caractère ascii?
public char toAscii (int input) {
return (char)input;
}
Voici un exemple, qui montre qu'en convertissant un int en char, on peut déterminer le caractère correspondant en code ASCII.
public class sample6
{
public static void main(String... asf)
{
for(int i =0; i<256; i++)
{
System.out.println( i + ". " + (char)i);
}
}
}
réponse supérieure seulement près de résoudre le problème. voici votre réponse:
Integer.decode (Character.toString (char c));