преобразовать символ в код ascii java
Преобразование символа в числовое значение ASCII в java
у меня есть String name = «admin»;
тогда я делаю String char = name.substring(0,1); //char=»a»
Я хочу, чтобы преобразовать char к его значению ASCII (97), как я могу сделать это в java?
19 ответов:
в вашем случае вам нужно сначала получить конкретный символ из строки, а затем привести его.
хотя приведение не требуется явно, но его улучшает читаемость.
bytes[0] будет представлять ascii из a.. и, таким образом, другие символы во всем массиве.
вы должны использовать charAt() метод.
где вы получите 979899 в качестве вывода.
Я просто скопировал его здесь, чтобы это было удобно для других.
несколько ответов, которые предполагают показать, как это сделать, все неверны, потому что символы Java не являются символами ASCII. Java использует многобайтовую кодировку символов Юникода. Набор символов Юникода-это супер набор ASCII. Таким образом, в строке Java могут быть символы, которые не принадлежат ASCII. Такие символы не имеют числового значения ASCII, поэтому вопрос о том, как получить числовое значение ASCII символа Java, не имеет ответа.
но почему вы действительно хотите все равно это сделать? Что вы собираетесь делать со стоимостью?
Если вы хотите числовое значение, чтобы вы могли преобразовать строку Java в строку ASCII, то реальные вопрос: «как я могу кодировать строку Java как ASCII». Для этого используйте объект StandardCharsets. US_ASCII.
Преобразование символа в числовое значение ASCII в java
Я хочу преобразовать значение charValue в его значение ASCII (97), как я могу сделать это в java?
22 ответа
Я перепробовал множество решений для преобразования символа в Ascii. И у всех у них есть проблема. Одним из решений было: char A; int ValeurASCII = static_cast (A); Но VS упоминает, что static_cast-это недопустимое преобразование типов. PS: мой A всегда является одним из специальных.
В вашем случае вам нужно сначала получить конкретный символ из строки, а затем привести его.
Хотя приведение не требуется явно, но оно улучшает читаемость.
просто другой подход
bytes[0] будет представлять ascii из a.. и, следовательно, другие символы во всем массиве.
Несколько ответов, которые должны показать, как это сделать, все неверны, потому что Java символов-это не ASCII символов. Java использует многобайтовую кодировку символов Юникода. Набор символов Юникода-это супер набор ASCII. Таким образом, в строке Java могут быть символы, которые не принадлежат ASCII. Такие символы не имеют числового значения ASCII, поэтому вопрос о том, как получить числовое значение ASCII символа Java, не имеет ответа.
Но почему ты все равно хочешь это сделать? Что вы собираетесь делать с этой ценностью?
где вы получите 979899 в качестве вывода.
Я просто скопировал его здесь, чтобы это было удобно для других.
Преобразуйте символ в int.
Просто приведите символ к int.
Значение number будет be 97.
У меня есть много имен файлов данных Windows 7, которые, по-видимому, содержат пустое пространство непосредственно перед расширением. В конечном счете, я хочу устранить пробелы, но моя непосредственная проблема-найти их. Я предположил, что преобразование каждого символа имени файла в значение.
У нас есть проблема в переносе следующей логики с C++ на Java. Метод Java должен возвращать то же значение, что и функция C++. Логика терпит неудачу, если keyValue содержит не ASCII символа. Функция C++ работает следующим образом, int CMyClass::KeyToId( const char *keyValue ) < int sum = 0, len =.
Я знаю, что на этот вопрос уже был дан ответ в нескольких формах, но вот мой фрагмент кода с возможностью просмотра всех символов.
Вот код, начатый с класса
Если вы напечатаете «character», вы получите 97.
Это просто, получите нужный символ и преобразуйте его в int.
Как указал @Raedwald, Юникод Java не удовлетворяет всем символам, чтобы получить значение ASCII. Правильный способ (Java 1.7+) заключается в следующем :
Или вы можете использовать Stream API для 1 символа или строки, начинающейся с Java 1.8:
использование Java 9 => String.chars()
Вы можете проверить номер ASCIIs с помощью этого кода.
Если я ошибаюсь, приношу свои извинения.
Если вам нужно значение ASCII для всех символов в строке. Вы можете использовать это :
и если вы хотите ASCII одного символа в строке, вы можете пойти на :
Я пытался сделать то же самое, но лучшим и простым решением было бы использовать charAt и для доступа к индексам мы должны создать целочисленный массив размером [128].
В случае, если вы хотите отобразить ascii значение полной строки, вам необходимо это сделать.
Ваш результат в этом случае будет: Ascii значение a равно: 97 Ascii значение d равно: 100 Ascii значение m равно: 109 Ascii значение i равно: 105 Ascii значение n равно: 110
Для всей строки в ASCII :
На выходе получается :
THe asscii value of each character is: 97 100 109 105 110 Здесь abc.charAt(i) дает один символ строкового массива: Когда мы присваиваем каждому символу целочисленный тип, компилятор выполняет преобразование типа как,
arr[i] = (int) character // Here, every individual character is coverted in ascii value
Но для одного символа:
String name = admin; asciiValue = (int) name.charAt(0);// for character ‘a’ System.out.println(asciiValue);
Для этого мы могли бы сразу же использовать String classe
Я хотел бы дать еще одно предложение, как преобразовать всю строку в соответствующие коды ascii, используя, например, java 8, от «abcde» до «979899100101».
Однострочное решение без использования дополнительной переменной int:
Похожие вопросы:
Является ли приведенный ниже код преобразованием символа в его значение ASCII?. Я столкнулся с фрагментом кода во время изучения оценки постфиксной операции,где говорится: выражение преобразует.
Я перепробовал множество решений для преобразования символа в Ascii. И у всех у них есть проблема. Одним из решений было: char A; int ValeurASCII = static_cast (A); Но VS упоминает, что.
У меня есть много имен файлов данных Windows 7, которые, по-видимому, содержат пустое пространство непосредственно перед расширением. В конечном счете, я хочу устранить пробелы, но моя.
У нас есть проблема в переносе следующей логики с C++ на Java. Метод Java должен возвращать то же значение, что и функция C++. Логика терпит неудачу, если keyValue содержит не ASCII символа. Функция.
Char.toInt() возвращает код символа ASCII, а не его числовое значение. Итак,как же мне преобразовать символ в целое число с правильным числовым значением?
Я не могу поверить, что мне трудно с этим справиться, но до сих пор не нашел ответа: допустим, у меня есть Java char (или 1-символьный String ), и я хочу преобразовать его в byte из ASCII. Как мне.
Закодируйте строку в UTF-8 на Java
В этом уроке мы рассмотрим, как кодировать строку в UTF-8 на Java – с помощью стандартных наборов символов, getBytes() с помощью ByteBuffer и Apache Commons с примерами.
Вступление
При работе со строками | в Java нам часто приходится кодировать их в определенную кодировку, такую как UTF-8 .
Кодовая точка может представлять отдельные символы, но также иметь другие значения, например, для форматирования. “Переменная ширина” означает, что он кодирует каждую кодовую точку с разным количеством байтов (от одного до четырех), и в качестве меры экономии места обычно используемые кодовые точки представлены меньшим количеством байтов, чем те, которые используются реже.
Примечание: Java кодирует все строки в UTF-16, который использует минимум два байта для хранения кодовых точек. Зачем тогда нам нужно было бы конвертировать в UTF-8?
Не все входные данные могут быть UTF-16, или UTF-8, если на то пошло. На самом деле вы можете получить строку в кодировке ASCII, которая поддерживает не так много символов, как UTF-8. Кроме того, не все выходные данные могут обрабатывать UTF-16, поэтому имеет смысл преобразовать в более универсальный UTF-8.
Давайте выпишем пару строк:
Как только мы создадим эти строки и закодируем их в виде символов ASCII, мы сможем их распечатать:
Чтобы избежать этой проблемы, мы можем предположить, что не все входные данные уже могут быть закодированы по нашему вкусу – и закодировать их, чтобы самим решить такие случаи. Существует несколько способов кодирования строки в UTF-8 на Java.
Использование метода getBytes()
Теперь выводится та же самая строка, с которой мы начали, но закодированная в UTF-8:
Кодируйте строку в UTF-8 с помощью стандартных наборов символов Java 7
Git Essentials
Ознакомьтесь с этим практическим руководством по изучению Git, содержащим лучшие практики и принятые в отрасли стандарты. Прекратите гуглить команды Git и на самом деле изучите это!
Выполнение этого кода приводит к:
Закодируйте строку в UTF-8 с помощью Apache Commons
Чтобы мы могли использовать кодек Apache Commons, нам нужно добавить его в наш проект в качестве внешней зависимости.
Используя Maven, давайте добавим зависимость commons-кодек в ваш pom.xml файл:
В качестве альтернативы, если вы используете Gradle:
Это позволяет нам преобразовывать строки в байты и из байтов, используя различные кодировки, требуемые спецификацией Java. Этот класс является нулевым и потокобезопасным, поэтому у нас есть дополнительный уровень защиты при работе со строками.
Если вы используете Gradle:
И теперь мы можем использовать почти тот же подход, что и с обычными строками:
Благодаря этому подход является потокобезопасным и нулевым:
Вывод
Руководство по кодировке символов
Изучите кодировку символов в Java и узнайте о распространенных подводных камнях.
1. Обзор
В этом уроке мы обсудим основы кодирования символов и то, как мы справляемся с этим в Java.
2. Важность кодирования символов
Нам часто приходится иметь дело с текстами, принадлежащими к нескольким языкам с различными письменными знаками, такими как латинский или арабский. Каждый символ в каждом языке должен быть каким-то образом сопоставлен с набором единиц и нулей. Действительно, удивительно, что компьютеры могут правильно обрабатывать все наши языки.
Чтобы сделать это правильно, нам нужно подумать о кодировке символов. Невыполнение этого требования часто может привести к потере данных и даже уязвимостям безопасности.
Чтобы лучше понять это, давайте определим метод декодирования текста на Java:
Обратите внимание, что вводимый здесь текст использует кодировку платформы по умолчанию.
Ну, не совсем то, что мы ожидали.
Что могло пойти не так? Мы постараемся понять и исправить это в оставшейся части этого урока.
3. Основы
3.1. Кодирование
Например, первая буква в нашем сообщении, “T”, в US-ASCII кодирует в “01010100”.
3.2. Кодировки
3.3. Кодовый пункт
Кодовая точка-это абстракция, которая отделяет символ от его фактической кодировки. A кодовая точка – это целочисленная ссылка на определенный символ.
Мы можем представить само целое число в простых десятичных или альтернативных основаниях, таких как шестнадцатеричное или восьмеричное. Мы используем альтернативные базы для удобства ссылки на большие числа.
Например, первая буква в нашем сообщении, T, в Юникоде имеет кодовую точку “U+0054” (или 84 в десятичной системе счисления).
4. Понимание Схем Кодирования
Кодировка символов может принимать различные формы в зависимости от количества символов, которые она кодирует.
Количество закодированных символов имеет прямое отношение к длине каждого представления, которое обычно измеряется как количество байтов. Наличие большего количества символов для кодирования по существу означает необходимость более длинных двоичных представлений.
Давайте рассмотрим некоторые из популярных схем кодирования на практике сегодня.
4.1. Однобайтовое кодирование
Одна из самых ранних схем кодирования, называемая ASCII (Американский стандартный код для обмена информацией), использует однобайтовую схему кодирования. По сути, это означает, что каждый символ в ASCII представлен семибитными двоичными числами. Это все еще оставляет один бит свободным в каждом байте!
Ascii 128-символьный набор охватывает английские алфавиты в нижнем и верхнем регистрах, цифры и некоторые специальные и контрольные символы.
Давайте определим простой метод в Java для отображения двоичного представления символа в определенной схеме кодирования:
Теперь символ ” T ” имеет кодовую точку 84 в US-ASCII (ASCII в Java называется US-ASCII).
И если мы используем наш метод утилиты, мы можем увидеть его двоичное представление:
Это, как мы и ожидали, семиразрядное двоичное представление символа “T”.
Исходный ASCII оставил самый значимый бит каждого байта неиспользованным. В то же время ASCII оставил довольно много непредставленных символов,
Исходный ASCII оставил самый значимый бит каждого байта неиспользованным. || В то же время ASCII оставил довольно много непредставленных символов,
Было предложено и принято несколько вариантов схемы кодирования ASCII.
Многие расширения ASCII имели разные уровни успеха, но, очевидно, это
4.2. Многобайтовое кодирование
Поскольку потребность в размещении все большего количества символов росла, однобайтовые схемы кодирования, такие как ASCII, не были устойчивыми.
Это привело к появлению многобайтовых схем кодирования, которые имеют гораздо большую емкость, хотя и за счет увеличения требований к пространству.
Давайте теперь вызовем метод convertToBinary с вводом как “語”, китайский символ, и кодирование как “Big5”:
Вывод выше показывает, что кодировка Big5 использует два байта для представления символа “語”.
полный список кодировок символов, наряду с их псевдонимами, ведется Международным органом по номерам.
5. Юникод
Нетрудно понять, что, хотя кодирование важно, декодирование в равной степени жизненно важно для понимания представлений. Это возможно на практике только в том случае, если широко используется согласованная или совместимая схема кодирования.
Различные схемы кодирования, разработанные изолированно и практикуемые в местных географических регионах, начали становиться сложными.
Ну, для этого должно потребоваться несколько байтов для хранения каждого символа? Честно говоря, да, но у Unicode есть гениальное решение.
Unicode как стандарт определяет кодовые точки для каждого возможного символа в мире. Кодовая точка для символа “T” в Юникоде равна 84 в десятичной системе счисления. Обычно мы называем это “U+0054” в Юникоде, который представляет собой не что иное, как U+, за которым следует шестнадцатеричное число.
Мы используем шестнадцатеричную систему в качестве основы для кодовых точек в Юникоде, поскольку существует 1 114 112 точек, что является довольно большим числом для удобной передачи в десятичном формате!
То, как эти кодовые точки кодируются в биты, зависит от конкретных схем кодирования в Юникоде. Мы рассмотрим некоторые из этих схем кодирования в подразделах ниже.
5.1. UTF-32
Вывод выше показывает использование четырех байтов для представления символа “T”, где первые три байта-это просто потраченное впустую пространство.
5.2. UTF-8
Давайте снова вызовем метод convertToBinary с вводом как “T” и кодированием как ” UTF-8″:
Вывод в точности аналогичен ASCII, использующему только один байт. На самом деле UTF-8 полностью обратно совместим с ASCII.
Давайте снова вызовем метод convertToBinary с вводом как “語” и кодированием как ” UTF-8″:
Как мы видим здесь, UTF-8 использует три байта для представления символа “語”. Это известно как кодирование переменной ширины .
UTF-8, благодаря своей экономичности пространства, является наиболее распространенной кодировкой, используемой в Интернете.
6. Поддержка кодирования в Java
Есть некоторые тонкости в том, как Java подбирает кодировку для работы. Давайте рассмотрим их более подробно.
6.1. Кодировка по умолчанию
Это зависит от локали и кодировки базовой операционной системы, на которой работает JVM. Например, в macOS кодировка по умолчанию-UTF-8.
Давайте посмотрим, как мы можем определить кодировку по умолчанию:
Если мы запустим этот фрагмент кода на компьютере с Windows, то получим результат:
Теперь “windows-1252” – это кодировка по умолчанию платформы Windows на английском языке, которая в данном случае определила кодировку по умолчанию JVM, работающей в Windows.
6.2. Кто использует Кодировку по умолчанию?
Многие API Java используют кодировку по умолчанию, определенную JVM. Чтобы назвать несколько:
Итак, это означает, что если бы мы запустили наш пример без указания кодировки:
затем он будет использовать кодировку по умолчанию для ее декодирования.
И есть несколько API, которые делают этот же выбор по умолчанию.
Таким образом, кодировка по умолчанию приобретает важность, которую мы не можем безопасно игнорировать.
6.3. Проблемы С Набором Символов По Умолчанию
Как мы уже видели, кодировка по умолчанию в Java определяется динамически при запуске JVM. Это делает платформу менее надежной или подверженной ошибкам при использовании в разных операционных системах.
Например, если мы запустим
в macOS он будет использовать UTF-8.
Если мы попробуем тот же фрагмент кода в Windows, он будет использовать Windows-1252 для декодирования того же текста.
Или представьте, что вы пишете файл в mac OS, а затем читаете тот же файл в Windows.
Нетрудно понять, что из-за различных схем кодирования это может привести к потере или повреждению данных.
6.4. Можем ли мы переопределить кодировку по умолчанию?
Определение кодировки по умолчанию в Java приводит к двум системным свойствам:
Теперь интуитивно понятно переопределять эти системные свойства с помощью аргументов командной строки:
6.5. Почему Java Не Решает Эту Проблему?
Существует предложение по улучшению Java (JEP), которое предписывает использовать “UTF-8” в качестве кодировки по умолчанию в Java вместо того, чтобы основывать ее на кодировке локали и операционной системы.
Этот ДЖИП находится в состоянии проекта на данный момент и когда он (надеюсь!) пройдя через него, мы решим большинство вопросов, которые мы обсуждали ранее.
Обратите внимание, что более новые API, такие как в файле java.nio.file.Файлы не используют кодировку по умолчанию. Методы в этих API-интерфейсах читают или записывают символьные потоки с кодировкой UTF-8, а не с кодировкой по умолчанию.
6.6. Решение Этой Проблемы в Наших Программах
К счастью, наш пример уже определяет кодировку. Нам просто нужно выбрать правильный, и пусть Java сделает все остальное.
К настоящему времени мы должны понять, что акцентированные символы, такие как “ç”, отсутствуют в схеме кодирования ASCII, и поэтому нам нужна кодировка, которая включает их. Может быть, UTF-8?
Давайте попробуем это сделать, теперь мы запустим метод decode Text с тем же вводом, но с кодировкой “UTF-8”:
Бинго! Мы можем увидеть результат, который мы надеялись увидеть.
Аналогично, OutputStreamWriter и многие другие API поддерживают настройку схемы кодирования через свой конструктор.
6.7. Исключение MalformedInputException
Существует три предопределенные стратегии (или CodingErrorAction ), когда входная последовательность имеет искаженные входные данные:
По умолчанию malformedInputAction для кодера CharsetDecoder является REPORT, и по умолчанию malformedInputAction декодера по умолчанию в InputStreamReader is REPLACE.
Для третьего теста мы используем CodingErrorAction.ОТЧЕТ который приводит к выбрасыванию MalformedInputException:
7. Другие Места, Где Кодирование Важно
Нам не просто нужно учитывать кодировку символов при программировании. Тексты могут окончательно испортиться во многих других местах.
Давайте быстро рассмотрим несколько мест, где мы можем столкнуться с проблемами при кодировании или декодировании текста.
7.1. Текстовые Редакторы
В большинстве случаев текстовый редактор-это место, откуда исходят тексты. Существует множество текстовых редакторов в популярном выборе, включая vi, Блокнот и MS Word. Большинство из этих текстовых редакторов позволяют нам выбрать схему кодирования. Следовательно, мы всегда должны быть уверены, что они подходят для текста, с которым мы работаем.
7.2. Файловая система
После того, как мы создадим тексты в редакторе, нам нужно сохранить их в какой-то файловой системе. Файловая система зависит от операционной системы, на которой она работает. Большинство операционных систем имеют встроенную поддержку нескольких схем кодирования. Однако все еще могут быть случаи, когда преобразование кодировки приводит к потере данных.
7.3. Сеть
Тексты, передаваемые по сети с использованием протокола, такого как протокол передачи файлов (FTP), также включают преобразование между кодировками символов. Для всего, что закодировано в Юникоде, безопаснее всего передавать в двоичном виде, чтобы свести к минимуму риск потери при преобразовании. Однако передача текста по сети является одной из менее частых причин повреждения данных.
7.4. Базы данных
Большинство популярных баз данных, таких как Oracle и MySQL, поддерживают выбор схемы кодирования символов при установке или создании баз данных. Мы должны выбрать это в соответствии с текстами, которые мы ожидаем сохранить в базе данных. Это одно из наиболее частых мест, где повреждение текстовых данных происходит из-за преобразования кодировки.
7.5. Браузеры
Наконец, в большинстве веб-приложений мы создаем тексты и пропускаем их через различные слои с намерением просмотреть их в пользовательском интерфейсе, например в браузере. Здесь также важно, чтобы мы выбрали правильную кодировку символов, которая может правильно отображать символы. Большинство популярных браузеров, таких как Chrome, Edge, позволяют выбирать кодировку символов в своих настройках.
8. Заключение
В этой статье мы обсудили, как кодирование может быть проблемой при программировании.
Далее мы обсудили основные принципы, включая кодировку и кодировки. Более того, мы прошли через различные схемы кодирования и их использование.
Мы также подобрали пример неправильного использования кодировки символов в Java и увидели, как это сделать правильно. Наконец, мы обсудили некоторые другие распространенные сценарии ошибок, связанные с кодировкой символов.
Преобразование символа в числовое значение ASCII в Java
У меня есть String name = «admin»;
тогда я делаю String charValue = name.substring(0,1); //charValue=»a»
Я хочу преобразовать charValue в его значение ASCII (97), как я могу сделать это в java?
22 ответа
В вашем случае вам нужно сначала получить конкретный символ из строки, а затем привести его.
Хотя приведение не требуется явно, но оно улучшает читаемость.
Однострочное решение без использования дополнительной переменной int:
Для этого мы могли бы сразу использовать String classe’s
Я хотел бы дать еще одно предложение, как преобразовать всю строку в соответствующие коды ascii, используя, например, java 8, «abcde» в «979899100101».
Самый простой способ сделать это:
Для всей строки в ASCII:
Результат:
THe asscii value of each character is: 97 100 109 105 110
arr[i] = (int) character // Here, every individual character is coverted in ascii value
Но для одного символа:
String name = admin; asciiValue = (int) name.charAt(0);// for character ‘a’ System.out.println(asciiValue);
Я пробовал то же самое, но лучшим и простым решением было бы использовать charAt, а для доступа к индексам мы должны создать целочисленный массив размером [128].
В случае, если вы хотите отобразить значения ascii полной строки, вам необходимо это сделать.
Ваш вывод в этом случае будет: Значение Ascii для a: 97 Значение Ascii для d: 100 Значение Ascii для m: 109 Значение Ascii для i: 105 Значение Ascii для n: 110
Если вам нужно значение ASCII для всех символов в String. Вы можете использовать это:
И если вам нужен ASCII из одного символа в строке, вы можете выбрать:
Вы можете проверить номер ASCII с помощью этого кода.
Если я ошибаюсь, извиняюсь.
С использованием Java 9 => String.chars ()
Или вы можете использовать Stream API для 1 символа или строки, начиная с Java 1.8:
Как отметил @Raedwald, Unicode Java не обслуживает все символы для получения значения ASCII. Правильный способ (Java 1.7+) выглядит следующим образом:
Это просто: получите нужный символ и преобразуйте его в int.
Простой способ для этого:
Если вы напечатаете «персонаж», вы получите 97.
Я знаю, что на это уже был дан ответ в нескольких формах, но вот мой фрагмент кода, в котором просматриваются все символы.
Вот код, начатый с класса
Просто преобразуйте char в int.
Значение number будет 97.
Преобразуйте символ в int.
При этом вы получите 979899 в качестве вывода.
Просто скопировал сюда, чтобы другим было удобно.
Но почему все равно хотите это сделать? Что вы собираетесь делать с ценностью?