¿Cómo obtener una representación binaria rellena con 0 de un número entero en Java?
por ejemplo, para 1, 2, 128, 256
la 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 0
s 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.
Creo que esta es una solución subóptima, pero podrías hacer
String.format("%16s", Integer.toBinaryString(1)).replace(' ', '0')
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)))