У нас проблема с переносом следующей логики с C ++ на Java. Метод Java должен возвращать то же значение, что и функция C ++. Логика не срабатывает, если keyValue содержит символы не ASCII.
Функция C ++ работает следующим образом:
В строке # 2 keyValue [i] преобразуется в 8-байтовый ASCII-код.
Точный порт для Java выглядит следующим образом:
В Java символ keyValue.charAt (i) преобразуется в значение «Юникод». Я не мог придумать простой способ преобразовать это в эквивалентный код ASCII. Приложение C ++ не является приложением, поддерживающим Юникод. Пожалуйста, предположим, мы не можем изменить логику C ++.
Больше входов:
Я запускаю приложения на русском языке. Для ввода красного цвета приложение C ++ возвращает -1452. Я хотел бы получить то же значение из кода Java.
Решение
Программа C ++ использует кодировку платформы по умолчанию для представления символов в char тип данных. Чтобы сделать то же самое в Java, вы должны использовать эквивалент Java byte тип данных и преобразовать строку перед вычислением:
Если это тоже не сработает,
-
Проверьте знак char в вашей программе на C ++: большинство компиляторов используют подписанные символы по умолчанию, что совпадает с байтом Java. Если вы используете беззнаковые символы, код нуждается в корректировке.
Убедитесь, что программа Java правильно читает строку. Один из способов сделать это — распечатать байты; дано красный ты должен получить [-22, -16, -32, -15, -19, -5, -23] :
Другие решения
Попробуйте усечь символы Java до 1 байта
Дает вам byte[] массив кода ASCII, а затем вы можете работать так же, как в C ++.
У меня String name = «admin»;
то я делаю String char = name.substring(0,1); //char=»a»
Я хочу преобразовать char в его значение ASCII (97), как это сделать в java?
Очень просто. Просто введите char как int .
В вашем случае вам нужно сначала получить конкретный символ из строки, а затем бросить его.
Хотя приведение не требуется явно, но улучшает читаемость.
просто другой подход
bytes[0] будет представлять ascii a.. и, следовательно, другие символы во всем массиве.
Вы должны использовать метод charAt() .
Если вы хотите преобразовать всю строку в конкатенированные значения ASCII, вы можете использовать это —
в котором вы получите 979899 в качестве вывода.
Я просто скопировал его здесь, чтобы это было удобно для других.
Несколько ответов, показывающих, как это сделать, неверны, поскольку символы Java не являются символами ASCII. Java использует многобайтовую кодировку символов Unicode. Набор символов Unicode — это расширенный набор символов ASCII. Таким образом, в строке Java могут быть символы, которые не принадлежат ASCII. Такие символы не имеют числового значения ASCII, поэтому вопрос о том, как получить числовое значение ASCII символа Java, остается без ответа.
Но почему ты так хочешь? Что вы собираетесь делать со значением?
Если вам нужно числовое значение, чтобы вы могли преобразовать строку Java в строку ASCII, реальный вопрос заключается в том, «как кодировать строку Java в виде ASCII». Для этого используйте объект StandardCharsets.US_ASCII .
Преобразуйте char в int.
Просто введите char в int.
Значение number будет равно 97.
Это просто, получить нужный символ и преобразовать его в int.
Я String name = «admin»;
тогда я делаю String char = name.substring(0,1); //char=»a»
Я хочу, чтобы преобразовать char к его значению ASCII (97), как я могу это сделать в java?
19 ответов
очень удобно. Просто бросьте свой char как int .
в вашем случае вам нужно сначала получить конкретный символ из строки, а затем бросить его.
хотя приведение не требуется явно, но его улучшает читаемость.
просто другой подход
bytes[0] будет представлять ascii из a.. и, таким образом, другие символы во всем массиве.
вы должны использовать charAt() метод.
Если вы хотите преобразовать всю строку в Объединенные значения ASCII, то вы можете использовать это —
где вы получите 979899 как выходной.
Я просто скопировал его здесь, чтобы это было удобно для других.
несколько ответов, которые призваны показать, как это сделать, все неправильно, потому что символы Java не являются символами ASCII. Java использует многобайтовую кодировку символов Юникода. Набор символов Юникода-это супер набор ASCII. Таким образом, в строке Java могут быть символы, которые не принадлежат ASCII. Такие символы не имеют числового значения ASCII, поэтому вопрос о том, как получить числовое значение ASCII символа Java, не имеет ответа.
но почему вы хотите сделать это в любом случае? Что вы собираетесь делать с ценностью?