web-dev-qa-db-fra.com

Java - Changer int en ascii

Existe-t-il un moyen pour Java de convertir les int en symboles ascii?

32
ChrisM

Voulez-vous convertir ints en chars?:

int yourInt = 33;
char ch = (char) yourInt;
System.out.println(yourInt);
System.out.println(ch);
// Output:
// 33
// !

Ou voulez-vous convertir ints en Strings?

int yourInt = 33;
String str = String.valueOf(yourInt);

Ou qu'est-ce que tu veux dire?

61
Sean Patrick Floyd

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);
15
RichardP

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
3
user9229146

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).

3
Travis

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'

1
Nadir

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));
}
1
Michael Aaron Safyan