12 ответов:
если вы пытаетесь преобразовать поток в текст, вам нужно знать, какую кодировку вы хотите использовать. Затем вы можете либо передать массив байтов в
Stringконструктор и предоставитьCharset, или использоватьInputStreamReaderсоответствующейCharsetвместо.просто литье от
intдоcharработает только если вы хотите ISO-8859-1, Если Вы читаете байты из потока напрямую.изменить: если вы are уже
Reader, затем приведение возвращаемого значенияread()доcharэто правильный путь (после проверки, является ли это -1 или нет)... но это, как правило, более эффективными и удобными для вызоваread(char[], int, int)читать целый блок текста за один раз. Не забудьте проверить возвращаемое значение, чтобы увидеть, сколько символов было прочитано.
может быть, вы просите:
Character.toChars(65) // returns ['A']Подробнее:
Character.toChars(int codePoint)преобразует указанный символ (кодовая точка Юникода) в его представление UTF-16, хранящееся в массиве символов. Если указанная кодовая точка является значением BMP (Basic Multilingual Plane или Plane 0), результирующий массив символов имеет то же значение, что и кодовая точка. Если указанная кодовая точка является дополнительной кодовой точкой, то результирующий массив символов имеет соответствующий суррогат пара.
это зависит от того, что вы подразумеваете под "конвертировать int в char".
Если вы просто хотите привести значение в int, вы можете привести его с помощью нотации typecast Java:
int i = 97; // 97 is 'a' in ASCII char c = (char) i; // c is now 'a'Если вы имеете в виду преобразование целого числа 1 на символ '1', Вы можете сделать это так:
if (i >= 0 && i <= 9) { char c = Character.forDigit(i, 10); .... }
Если вы хотите просто конвертировать int 5 в char '5': (Только для целых чисел 0 - 9)
int i = 5; char c = (char) ('0' + i); // c is now '5';
простой кастинг:
int a = 99; char c = (char) a;есть ли причина, по которой это не работает для вас?
Это решение работает для размера целочисленной длины =1.
Integer input = 9; Character.valueOf((char) input.toString().charAt(0))если размер >1 Нам нужно использовать для цикла и повторять.
большинство ответов здесь предлагают ярлыки, которые могут принести вам большие проблемы, если вы понятия не имеете, что вы делаете. Если вы хотите использовать ярлыки, то вы должны точно знать, в какой кодировке находятся ваши данные.
UTF-16
всякий раз, когда java говорит о символах в своей документации, он говорит о 16-битных символах.
вы можете использовать
DataInputStream, который имеет удобные методы. Для эффективности, оберните его в aBufferedReader.// e.g. for sockets DataInputStream in = new DataInputStream(new BufferedInputStream(socket.getInputStream())); char character = readChar(); // no need to castдело в том, что каждый
readChar()на самом деле будет выполнять 2read' s и объединить их в один 16-битный символ.US-ASCII
US-ASCII резервирует 8 бит для кодирования 1 символа. Таблица ASCII описывает только 128 возможных символов, поэтому 1 бит всегда не используется.
вы можете просто выполнить бросок в этом случае.
int input = stream.read(); if (input < 0) throw new EOFException(); char character = (char) input;расширенный ASCII
UTF-8, Латинский-1, ANSI и многие другие кодировки используют все 8-битные. Первые 7 бит следуют за таблицей ASCII и идентичны кодировке US-ASCII. Однако 8-й бит предлагает символы, которые отличаются во всех этих кодировках. Итак, здесь все становится интересным.
если вы ковбой, и вы думаете, что 8-й бит не имеет значения (т. е. вы не заботитесь о таких персонажах, как "à, é, ç, è,"...) тогда вы можете уйти с простым бросать.
однако, если вы хотите сделать это профессионально, вы должны всегда указывать кодировку при импорте/экспорте текста (например, сокеты, файлы ...).
всегда использовать наборы символов
давайте серьезно. Все вышеперечисленные варианты являются дешевыми трюками. Если вы хотите написать гибкое программное обеспечение, вам нужно поддерживать настраиваемый набор символов для импорта / экспорта ваших данных. Вот общее решение:
читать ваши данные с помощью
byte[]буфера и, чтобы преобразовать этоStringС помощью параметра charset.byte[] buffer = new byte[1024]; int nrOfBytes = stream.read(buffer); String result = new String(buffer, nrOfBytes, charset);вы также можете использовать
InputStreamReaderкоторый может быть создан с помощью параметра charset.еще одно золотое правило: никогда не бросайте байт в символ напрямую. Это всегда ошибка.
основываясь на моем ответе на предположении, что пользователь просто хотел literaaly преобразовать
intдоchar, напримерInput: int i = 5; Output: char c = '5'на это уже был дан ответ выше, однако если целое значение
i > 10, то нужно использоватьchar array.char[] c = String.valueOf(i).toCharArray();
может быть, не самый быстрый:
//for example there is an integer with the value of 5: int i = 5; //getting the char '5' out of it: char c = String.format("%s",i).charAt(0);
ответ для преобразования char в int или long простой формы.
например: - если вы хотите преобразовать символ '0' в long.
следуйте простой литой
Char ch='0'; String convertedChar= Character.toString(ch); //Convert Char to String. Long finalLongValue=Long.parseLong(convertedChar);готово!!
Comments