texto rellenar numeros lower letras izquierda formato float espaƱol convertir con ceros caracteres python binary formatting bitwise-operators

numeros - rellenar con ceros a la izquierda python



Convierta a binario y mantenga los ceros a la izquierda en Python (8)

Estoy intentando convertir un entero en binario usando la función bin () en Python. Sin embargo, siempre elimina los ceros a la izquierda, que realmente necesito, de modo que el resultado siempre es de 8 bits:

Ejemplo:

bin(1) -> 0b1 # What I would like: bin(1) -> 0b00000001

¿Hay alguna forma de hacer esto?


A veces solo quieres un simple trazador de líneas:

binary = ''''.join([''{0:08b}''.format(ord(x)) for x in input])

Python 3


Puede usar la secuencia de formato de mini idioma:

def binary(num, pre=''0b'', length=8, spacer=0): return ''{0}{{:{1}>{2}}}''.format(pre, spacer, length).format(bin(num)[2:])

Manifestación:

print binary(1)

Salida:

''0b00000001''

EDIT: basado en la idea de @Martijn Pieters

def binary(num, length=8): return format(num, ''#0{}b''.format(length + 2))


Puedes usar algo como esto

("{:0%db}"%length).format(num)


Puedes usar zfill:

print str(1).zfill(2) print str(10).zfill(2) print str(100).zfill(2)

huellas dactilares:

01 10 100

Me gusta esta solución, ya que ayuda no solo cuando se envía el número, sino cuando se necesita asignarlo a una variable ... ej. - x = str (datetime.date.today (). Month) .zfill (2) will devuelve x como ''02'' para el mes de febrero.


Use la función format() :

>>> format(14, ''#010b'') ''0b00001110''

La función de format() simplemente formatea la entrada siguiendo el mini idioma de especificación de formato . El # hace que el formato incluya el prefijo 0b , y el tamaño 010 formatea el resultado para que quepa en un ancho de 10 caracteres, con 0 relleno; 2 caracteres para el prefijo 0b , los otros 8 para los dígitos binarios.

Esta es la opción más compacta y directa.

Si está colocando el resultado en una cadena más grande, use str.format() y coloque el segundo argumento para la función format() después de los dos puntos del marcador de posición {:..} :

>>> ''The produced output, in binary, is: {:#010b}''.format(14) ''The produced output, in binary, is: 0b00001110''

Si no desea el prefijo 0b , simplemente suelte el # y ajuste la longitud del campo:

>>> format(14, ''08b'') ''00001110''


estoy usando

bin(1)[2:].zfill(8)

imprimirá

''00000001''


>>> ''{:08b}''.format(1) ''00000001''

Ver: Especificación de formato Mini-Idioma

Tenga en cuenta que para Python 2.6 o anterior, no puede omitir el identificador de argumento posicional antes, así que use

>>> ''{0:08b}''.format(1) ''00000001''


module Adder( input upperBit, lowerBit, c_in, output s, c_out) write gate1, gate2, gate3 xor (gate1, upperBit, lowerBit) xor (s, gate1, c_in) and (upperBit, lowerBit) and (gate1, c_in) or (c_out, gate1, gate2) endmodule module ful_adder8( input [7:0) a, b input c_in output [7:0) s, output c_out) write [7:0] carry full_adder fa0( a(a[o]) b(b[0]) c_in(c_in) s(s[0]) c_out(carry[0])) full_adder fa0( a(a[o]) b(b[0]) c_in(c_in) s(s[0]) c_out(carry[0])) full_adder fa0( a(a[o]) b(b[0]) c_in(c_in) s(s[0]) c_out(carry[0])) full_adder fa0( a(a[o]) b(b[0]) c_in(c_in) s(s[0]) c_out(carry[0])) full_adder fa0( a(a[o]) b(b[0]) c_in(c_in) s(s[0]) c_out(carry[0])) full_adder fa0( a(a[o]) b(b[0]) c_in(c_in) s(s[0]) c_out(carry[0])) full_adder fa0( a(a[o]) b(b[0]) c_in(c_in) s(s[0]) c_out(carry[0])) full_adder fa0( a(a[o]) b(b[0]) c_in(c_in) s(s[0]) c_out(carry[0])) endmodule test def split (n): return (n&0x1,n&0x2,n&0x4,n&0x8,n&0x10,n&0x20,n&0x40,n&0x80) def glue (b0,b1,b2,b3,b4,b5,b6,b7,c): t = 0 if b0: t += 1 if b1: t += 2 if b2: t += 4 if b3: t += 8 if b4: t += 16 if b5: t += 32 if b6: t += 64 if b7: t += 128 if c: t += 256 return t def myadd (a,b): (a0,a1,a2,a3,a4,a5,a6,a7) = split(a) (b0,b1,b2,b3,b4,b5,b6,b7) = split(b) (s0,s1,s2,s3,s4,s5,s6,s7,c) = addEightBits(a0,a1,a2,a3,a4,a5,a6,a7,b0,b1,b2,b3,b4,b5,b6,b7,false) return glue (s0,s1,s2,s3,s4,s5,s6,s7,c)