Тип данных для хранения 20-значного числа

У меня есть 20-значный номер, какой тип данных будет поддерживать этот номер? Я пытался долго, дважды, но я выхожу за пределы досягаемости.

Номер = 48565664968483514466

Затем мне нужно преобразовать это число в Base36, чтобы сгенерировать штрих-код.


person DeepVeen    schedule 15.09.2014    source источник
comment
BigInteger — когда я пытаюсь использовать новый BigInteger (число), я получаю литерал типа int вне допустимого диапазона.   -  person DeepVeen    schedule 15.09.2014
comment
Делаете ли вы какие-либо числовые манипуляции с числом?   -  person brso05    schedule 15.09.2014
comment
BigInteger i = новый BigInteger(48565664968483514466);   -  person brso05    schedule 15.09.2014
comment
@ brso05 - мне нужно преобразовать это число в BASE36, чтобы сгенерировать штрих-код.   -  person DeepVeen    schedule 15.09.2014


Ответы (3)


BigInteger:

Класс BigInteger выделяет столько памяти, сколько ему необходимо для хранения всех битов данных, которые он должен хранить, а также предоставляет операции, аналогичные всем примитивным целочисленным операторам Java и всем соответствующим методам из java.lang.Math..

Объявите это как

BigInteger bi1 =  new BigInteger("12345678900123");
person kirti    schedule 15.09.2014

Чтобы преобразовать число в базу 36:

BigInteger number = new BigInteger("48565664968483514466");
String numberInBase36 = number.toString(36);
System.out.println(numberInBase36);
person assylias    schedule 15.09.2014

когда я пытаюсь использовать новый BigInteger(number), я получаю литерал типа int вне допустимого диапазона

Синтаксис, который вы ищете,

BigInteger n = new BigInteger("48565664968483514466");

с числовым литералом как String, поскольку примитивные целочисленные литералы не могут содержать такое большое число.

person Jim Garrison    schedule 15.09.2014