Подтвердить что ты не робот

Разбор шестнадцатеричной строки в Integer вызывает исключение NumberFormatException?

Итак, в Java вы знаете, как вы можете объявить целые числа следующим образом:

int hex = 0x00ff00;

Я думал, что вы сможете изменить этот процесс. У меня есть этот код:

Integer.valueOf(primary.getFullHex());

где primary - объект пользовательского класса Color. Конструктор принимает Integer для непрозрачности (0-99) и шестнадцатеричную строку (например, 00ff00).

Это метод getFullHex:

public String getFullHex() {
    return ("0x" + hex);
}

Когда я вызываю этот метод, он дает мне это NumberFormatException:

java.lang.NumberFormatException: For input string: "0xff0000"

Я не понимаю, что происходит. Может кто-нибудь объяснить?

4b9b3361

Ответ 1

Помогло ли это?

Integer.parseInt("00ff00", 16)

16 означает, что вы должны интерпретировать строку как 16-разрядную (шестнадцатеричную). Используя 2, вы можете анализировать двоичный номер, 8 означает восьмеричный. 10 по умолчанию и анализирует десятичные числа.

В вашем случае Integer.parseInt(primary.getFullHex(), 16) не будет работать из-за префикса 0x, добавленного getFullHex() - избавиться, и все будет в порядке.

Ответ 2

Integer.valueOf(string) принимает десятичное представление. Вы должны указать, что номер находится в шестнадцатеричном формате, например.

int value = Integer.valueOf("00ff0000", 16); 

Обратите внимание, что Integer.valueOf (строка, 16); не принимает префикс 0x. Если ваша строка содержит префикс 0x, вы можете использовать Integer.decode ( "0x00ff0000" );

Ответ 4

Метод parseInt принимает только номер числа, а не какой-либо "базовый" индикатор, такой как "0x" для шестнадцатеричного кода или "0" для восьмеричного. Используйте его так:

int decimal = Integer.parseInt("1234", 10);
int octal = Integer.parseInt("1234", 8);
int hex = Integer.parseInt("1234", 16);

Ответ 5

Это должно сделать это:

String hex = "FA"; 
int intValue = Integer.parseInt(hex, 16);

И если вы хотите генерировать шестнадцатеричное представление целого числа, используйте

String hex = Integer.toHexString(12); 

Ответ 6

Будет ли это работать?

Long.parseUnsignedLong(value, 16);