#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-битное. В этом случае Вам необходимо работать с длинной арифметикой. Но лучше всего правильно разобраться с изначально поставленной задачей (не той что в вопросе). Скорее всего нету необходимости переводить строковое число в целочисельный тип.
Комментариев нет:
Отправить комментарий