Страницы

Поиск по вопросам

понедельник, 3 февраля 2020 г.

Перевод строки с шестнадцатеричным числом в число

#java #строки


У меня возникли проблемы с переводом из строки в число.
Всё было бы просто, если бы в строке были числа в 10-ричной системе счисления, но
дело в том что функция у меня возвращает строку в 16-ричной системе счисления. 

Вот сама строка: F2C22A3B6CA109A46D9B45DB3F2C578A.

Как мне перевести её в число?
    


Ответы

Ответ 1



Ответ из комментариев @BOPOH Для целых чисел до 32-ух битов используется следующая конструкция: String str = "F2C22A3B"; int num = Integer.parseInt(str, 16); System.out.println(""+num); Для целых чисел до 64-ех битов: String str = "F2C22A3B6CA109A4"; long num = Long.parseLong(str, 16); System.out.println(""+num); Для чисел более 64-ех битов: String str = "F2C22A3B6CA109A46D9B45DB3F2C578A"; BigInteger num = new BigInteger(str, 16); System.out.println(""+num);

Ответ 2



В комментариях подсказали что строковое представление числа в 16-чной системе счисления можно перевести в тип int с помощью Integer.parseInt('FF', 16 ). Но это верно только для чисел которые помещаются в соответствующую разрядную сетку. Обычно тип int занимает 32 бита - числа от 0x00000000 до 0xFFFFFFFF, для 64-битного целого - числа от 0x0000000000000000 до 0xFFFFFFFFFFFFFFFF. В вашем же случае строковое представление числа заведомо больше - это число 128-битное. В этом случае Вам необходимо работать с длинной арифметикой. Но лучше всего правильно разобраться с изначально поставленной задачей (не той что в вопросе). Скорее всего нету необходимости переводить строковое число в целочисельный тип.

Комментариев нет:

Отправить комментарий