Existe-t-il un moyen pour Java de convertir les int en symboles ascii?
Voulez-vous convertir int
s en char
s?:
int yourInt = 33;
char ch = (char) yourInt;
System.out.println(yourInt);
System.out.println(ch);
// Output:
// 33
// !
Ou voulez-vous convertir int
s en String
s?
int yourInt = 33;
String str = String.valueOf(yourInt);
Ou qu'est-ce que tu veux dire?
Si vous convertissez d'abord l'int en char, vous aurez votre code ascii.
Par exemple:
int iAsciiValue = 9; // Currently just the number 9, but we want Tab character
// Put the tab character into a string
String strAsciiTab = Character.toString((char) iAsciiValue);
Vous pouvez convertir un nombre en ASCII en Java. Exemple de conversion d'un nombre 1 (la base est 10) en ASCII.
char k = Character.forDigit(1, 10);
System.out.println("Character: " + k);
System.out.println("Character: " + ((int) k));
Sortie:
Character: 1
Character: 49
Il existe de nombreuses façons de convertir un entier en ASCII (selon vos besoins), mais voici un moyen de convertir chaque octet entier en un ASCII caractère:
private static String toASCII(int value) {
int length = 4;
StringBuilder builder = new StringBuilder(length);
for (int i = length - 1; i >= 0; i--) {
builder.append((char) ((value >> (8 * i)) & 0xFF));
}
return builder.toString();
}
Par exemple, le texte ASCII pour "TEST" peut être représenté comme le tableau d'octets:
byte[] test = new byte[] { (byte) 0x54, (byte) 0x45, (byte) 0x53, (byte) 0x54 };
Ensuite, vous pouvez effectuer les opérations suivantes:
int value = ByteBuffer.wrap(test).getInt(); // 1413829460
System.out.println(toASCII(value)); // outputs "TEST"
... donc cela convertit essentiellement les 4 octets dans un entier 32 bits en 4 ASCII caractères séparés (un caractère par octet).
En fait, dans la dernière réponse String strAsciiTab = Character.toString ((char) iAsciiValue); l'essentiel est (char) iAsciiValue qui fait le travail (Character.toString inutile)
Signifiant que la première réponse était correcte en fait char ch = (char) yourInt;
si dans yourint = 49 (ou 0x31), ch sera '1'
En Java, vous voulez vraiment utiliser Integer.toString pour convertir un entier en sa valeur String correspondante. Si vous ne traitez qu'avec les chiffres de 0 à 9, vous pouvez utiliser quelque chose comme ceci:
private static final char[] DIGITS =
{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
private static char getDigit(int digitValue) {
assertInRange(digitValue, 0, 9);
return DIGITS[digitValue];
}
Ou équivalent:
private static int ASCII_ZERO = 0x30;
private static char getDigit(int digitValue) {
assertInRange(digitValue, 0, 9);
return ((char) (digitValue + ASCII_ZERO));
}