Это, по сути, почти то же самое, что и ответ @ Óscar López, но используются разные методы, поэтому я подумал, что должен его опубликовать. Надеюсь, это хорошо.
1] Построение строки формата
String format = "%0" + totalDigits + "d";
2] Целочисленное значение для двоичного преобразования
String dataStr = Integer.toBinaryString(data);
3] Заполнение ведущими нулями
dataStr = String.format(format, new Integer(dataStr));
Основным отличием здесь является 3-й шаг. Я считаю, что это на самом деле взломать.
@erickson прав в String.format()
, не поддерживающем двоичное, поэтому я преобразовал двоичное число в целое число (не его эквивалент), то есть «100» будет преобразовано в сотню (100), а не в четыре (4). Затем я использовал нормальное форматирование.
Не уверен, насколько оптимизирован этот код, но, я думаю, его легче читать, но, может быть, это только я.
EDIT
1] Переполнение буфера возможно для более длинных двоичных строк. Long
можно использовать, но даже у этого есть ограничения.
2] BigInteger
можно использовать, но, я уверен, он будет самым дорогим во время выполнения по сравнению со всеми другими методами.
Таким образом, кажется, если только не ожидаются только более короткие двоичные строки, replace()
является лучшим методом.
Пенсионеры,
поправьте меня пожалуйста если я не прав.
Спасибо.