Java - Измените int на ascii - PullRequest
       3

Java - Измените int на ascii

31 голосов
/ 16 марта 2011

Есть ли способ для java конвертировать int в символы ascii?

Ответы [ 6 ]

59 голосов
/ 16 марта 2011

Хотите преобразовать int с в char с?:

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

Или вы хотите конвертировать int с String с?

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

Или что ты имеешь в виду?

15 голосов
/ 24 марта 2013

Если вы сначала конвертируете int в тип char, у вас будет свой код ascii.

Например:

    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);
3 голосов
/ 07 января 2014

Есть много способов преобразовать int в ASCII (в зависимости от ваших потребностей), но вот способ преобразовать каждый целочисленный байт в символ ASCII:

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();
}

Например, текст ASCII для«ТЕСТ» может быть представлен в виде байтового массива:

byte[] test = new byte[] { (byte) 0x54, (byte) 0x45, (byte) 0x53, (byte) 0x54 };

Тогда вы можете сделать следующее:

int value = ByteBuffer.wrap(test).getInt(); // 1413829460
System.out.println(toASCII(value)); // outputs "TEST"

... так что это по существу преобразует 4 байта в 32-битовое целое число для 4 отдельных символов ASCII (один символ на байт).

2 голосов
/ 17 января 2018

Вы можете конвертировать число в ASCII в Java.Пример преобразования числа 1 (основание 10) в ASCII.

char k = Character.forDigit(1, 10);
System.out.println("Character: " + k);
System.out.println("Character: " + ((int) k));

Вывод:

Character: 1
Character: 49
1 голос
/ 16 февраля 2014

В Java вы действительно хотите использовать Integer.toString для преобразования целого числа в соответствующее ему строковое значение. Если вы имеете дело только с цифрами 0-9, то вы можете использовать что-то вроде этого:

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];
}

Или, что эквивалентно:

private static int ASCII_ZERO = 0x30;

private static char getDigit(int digitValue) {
  assertInRange(digitValue, 0, 9);
  return ((char) (digitValue + ASCII_ZERO));
}
1 голос
/ 12 ноября 2013

На самом деле в последнем ответе String strAsciiTab = Character.toString ((char) iAsciiValue); основная часть - это (char) iAsciiValue, которая выполняет эту работу (бесполезно Character.toString)

Значение первого ответа на самом деле было правильным char ch = (char) yourInt;

если в yourint = 49 (или 0x31), ch будет '1'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...