¿Cómo obtener una representación binaria rellena con 0 de un número entero en Java?

Resuelto khachik asked hace 13 años • 17 respuestas

por ejemplo, para 1, 2, 128, 256la salida puede ser (16 dígitos):

0000000000000001
0000000000000010
0000000010000000
0000000100000000

Lo intenté

String.format("%16s", Integer.toBinaryString(1));

pone espacios para el relleno izquierdo:

`               1'

Cómo poner 0s para relleno. No pude encontrarlo en Formatter . ¿Hay otra manera de hacerlo?

PD: esta publicación describe cómo formatear números enteros con relleno 0 a la izquierda, pero no es para la representación binaria.

khachik avatar Dec 12 '10 18:12 khachik
Aceptado

Creo que esta es una solución subóptima, pero podrías hacer

String.format("%16s", Integer.toBinaryString(1)).replace(' ', '0')
Samuel Parsonage avatar Dec 12 '2010 11:12 Samuel Parsonage

No hay conversión binaria integrada en java.util.Formatter; le recomendaría que use String.replace para reemplazar el carácter de espacio con ceros, como en:

String.format("%16s", Integer.toBinaryString(1)).replace(" ", "0")

O implemente su propia lógica para convertir números enteros a representación binaria con relleno izquierdo agregado en algún lugar a lo largo de las líneas indicadas en este documento. O si realmente necesita pasar números para formatear, puede convertir su representación binaria a BigInteger y luego formatearla con ceros a la izquierda, pero esto es muy costoso en tiempo de ejecución, como en:

String.format("%016d", new BigInteger(Integer.toBinaryString(1)))
Zoran Regvart avatar Dec 12 '2010 11:12 Zoran Regvart