# 1 - Вы не сказали, какое значение вы передаете InputParam1 , но я предполагаю, что вы передаете что-то отличное от строки, содержащей только «0» в «1» персонажи. Параметр 'radix' для конструктора сообщает коду, как интерпретировать строку, которую вы ему передаете. Это прекрасно работает для меня:
BigInteger binary=new BigInteger("1000",2);
System.out.println(binary);
То, как вы строите число, не имеет ничего общего с тем, как вы в конечном итоге захотите представлять или отображать это число. Ключевая идея здесь заключается в том, что представление числа (шестнадцатеричное, десятичное, двоичное) не имеет ничего общего с самим числом, так же как начальные нули не влияют на значение числа. 1111 двоичный, f шестнадцатеричный и 15 десятичный - все одно и то же число. Если вы передадите три из них в конструктор BigDecimal с основанием 2 , 16 и 10 соответственно, вы получите ТОЧНО ту же вещь в каждый случай. Объект потеряет представление о том, какой тип представления вы использовали для установки его начального значения.
# 3. Не существует понятия числа (int, BigInteger и т. Д.) С нулевым заполнением спереди, равно как и понятия, какое основание / основание вы можете использовать для визуального представления числа. Вы можете думать об этом концептуально, но это просто способ отображения числа. Это не имеет ничего общего с самим номером.
Я не пробовал раньше, но, похоже, нет супер простого способа отформатировать двоичное значение в Java с ведущими 0, как для десятичного и шестнадцатеричного, поскольку String.format () не дает формат спецификатор для двоичного файла. Согласно этому сообщению StackOverflow Как получить двоичное представление целого числа в java с добавлением 0-отступов? , кажется, это лучший способ, преобразовав наиболее приемлемый ответ для работы с BigInteger:
String str = String.format("%16s", binary.toString(2)).replace(' ', '0');
Итак, вот весь мой пример кода с выводом:
BigInteger binary=new BigInteger("1000",2);
System.out.println(binary);
String str = String.format("%16s", binary.toString(2)).replace(' ', '0');
System.out.println(str);
Выход:
8
0000000000001000