Как перевести char в int java
Чтобы привести символ char к целому числу int в Java, можно использовать статический метод getNumericValue() из класса Character . Этот метод возвращает числовое значение символа:
Character.getNumericValue('5'); // 5 Character.getNumericValue('0'); // 0
Буквы A-Z будут иметь числовое значение от 10 до 35
Character.getNumericValue('a'); // 10
Если символ не имеет числового представления, вернется -1
Character.getNumericValue('?'); // -1
Как преобразовать char в int java
Для преобразования символа char в целое число int в Java можно использовать метод Character.getNumericValue(char ch) из класса Character .
char ch = '5'; int num = Character.getNumericValue(ch); // 5
Как преобразовать массив символов char[] в int?
Посмотрите на функции atoi или более мощную strtol .
Отслеживать
ответ дан 20 мар 2021 в 18:59
220k 15 15 золотых знаков 120 120 серебряных знаков 233 233 бронзовых знака
20 мар 2021 в 19:43
@МаксимФисман Давайте уберем ссылки вообще — ответ останется полным и самодостаточным: Посмотрите на функции atoi или более мощную strtol . В данном случае ссылка — дополнение к ответу, чтобы вопросителю 🙂 было легче найти нужную информацию, а не собственно ответ.
21 мар 2021 в 4:06
Для преобразования C-строки в значение типа int есть по крайней мере следующие способы:
#include . char buffer[256] = "12345"; int val = std::atoi(buffer); cout
Если не удалось преобразовать строку в число (пустая строка, или последовательность символов в строке не представляет число), то функция возвращает ноль.
Если строка содержит число, но оно не представимо типом int , то поведение функции не определено.
#include . char buffer[256] = "12345"; int val = 0; int result = std::sscanf(buffer, "%d", &val); if (result == EOF) < //Входная строка пустая >else if (result == 0) < //Не удалось преобразовать строку в число >else
Если строка содержит число, но оно не представимо типом int , то поведение функции не определено.
#include #include #include . char buffer[256] = "12345"; char* buffer_end = nullptr; int saved_errno = errno; errno = 0; long lval = strtol(buffer, &buffer_end, 10); int cur_errno = errno; errno = saved_errno; if (buffer == buffer_end) < //Не удалось преобразовать строку в число >else if (cur_errno != 0) < //Переполнение при преобразовании в число >else if (lval < std::numeric_limits::min() || lval > std::numeric_limits::max()) < //Переполнение при преобразовании в число >else < int val = static_cast(lval); cout
- std::string + функция std::stoi() .
#include #include . char buffer[256] = "12345"; try < int val = std::stoi(std::string(buffer)); cout catch (const std::invalid_argument& e) < //Не удалось преобразовать строку в число >catch (const std::out_of_range& e) < //Переполнение при преобразовании в число >
#include . char buffer[256] = "12345"; int val = 0; std::stringstream stream; stream > val; if (stream.fail()) < //Либо не удалось преобразовать строку в число //Либо переполнение при преобразовании в число >else
- Функция std::from_chars()
#include #include #include . char buffer[256] = "12345"; int val = 0; auto res = std::from_chars(buffer, buffer + std::strlen(buffer), val); if (res.ec == static_cast(0)) < cout else if (res.ec == std::errc::invalid_argument) < //Не удалось преобразовать строку в число >else if (res.ec == std::errc::result_out_of_range) < //Переполнение при преобразовании в число >
std::from_chars() — единственная из представленных функций, на которую не влияют текущие глобальные локали. Но в отличие от других способов, данная функция не игнорирует ведущие пробельные символы в строке. Также неотрицательные числа не могут начинаться с символа + .
Помогите перевести char в int
В общем был недавно на олимпиаде. Нужно было чтоб все программы читали input.in и записывали результат в output.out. В input.in находится 5 чисел длиной до 2 символов (цифры типа integer). Считывается хорошо, все числа выводятся нормально :
#include #include using namespace std; int main() < ifstream input_file("[путь до]input.in") ; char one[2], two[2], three[2],four[2],five[2]; input_file >> one; input_file >> two; input_file >> three; input_file >> four; input_file >>five; cout
Но вот если хочу вести с ними какие то вычисления выскакивают непонятные значения, к примеру 174648468. Потом понял что char нужно перевести int. Пытался так :
int a; a = (int) one;
Норм руководства по itoa всяким не нашёл, да и судя по отзывам на форумах оно то особо и не помогает.
Как перевести эти char'ы в int ? Или я с самого начала неправильно считываю.
Кажется стоит избавиться от [2 ] в char n ? Написал на андрюше прогу и в диагностике пишет что квадратные скобки нужны только для string.