преобразование шестнадцатеричной строки в десятичную

java

2001 просмотра

4 ответа

Мне нужно преобразовать строку шестнадцатеричного в десятичную в Java ..

Мое шестнадцатеричное значение равно «00000156A56BE980».

Мой требуемый вывод 1471654128000

Я сделал следующее в Java,

public static void main (String args [])
{
  String hexValue = " 00000156A56BE980 ";
  Integer result = Integer.parseInt(hexValue, 16);
 System.out.println(result);
}

но я получаю следующую ошибку,

Числовой формат Исключение для входной строки "00000156A56BE980"

Я попытался, дав длинную также ту же ошибку, приходящую .. Для другого шестнадцатеричного значения это прибывает, но когда мы даем шестнадцатеричную строку большего значения, это показывает ошибку.

Как мы можем преобразовать это число в десятичное? Кто-нибудь может решить эту проблему для меня?

Автор: Anand Источник Размещён: 08.11.2019 11:12

Ответы (4)


4 плюса

Решение

Попробуй так

import java.math.*;

class Main {
    public static void main (String args [])
    {
        String hexValue = "00000156A56BE980";
        BigInteger result = new BigInteger(hexValue, 16);
        System.out.println(result);
    }
}

Смотрите также этот repl.it

Проблема, вероятно, в том, что ваше значение не вписывается в диапазон значений (от -2 31 до 2 32 -1) из Integer- см. Документы

Автор: DAXaholic Размещён: 20.08.2016 11:01

1 плюс

Число слишком велико для 32-разрядного int

Попробуйте использовать longвместо этого.

public static void main(String[] args) {
    String hexValue = "00000156A56BE980";
    long result = Long.parseLong(hexValue, 16);
    System.out.println(result);
}

Примечание: у вас не может быть пробелов в числе. Вы можете позвонить, .trim()чтобы удалить их.

Автор: Peter Lawrey Размещён: 20.08.2016 11:07

1 плюс

2 вещь в порядке код может работать:

  1. удалить пробелы обрезки строки
  2. результат вписывается в целое число, поэтому используйте вместо него Long или BigInteger

 public static void main(String[] args) {
    String hexValue = " 00000156A56BE980 ";
    long result = Long.parseLong(hexValue.trim(), 16);
    System.out.println(result);
    }
Автор: ΦXocę 웃 Пepeúpa ツ Размещён: 20.08.2016 11:08

0 плюса

Число слишком большое для целого числа (> 2 ^ 32).

(Значение, представленное строкой, не является значением типа int.)

Посмотрите здесь

Автор: Plirkee Размещён: 20.08.2016 11:06
Вопросы из категории :
32x32