me escribió esta función simple:función Decoración Hex a ceros almohadilla
def padded_hex(i, l):
given_int = i
given_len = l
hex_result = hex(given_int)[2:] # remove '0x' from beginning of str
num_hex_chars = len(hex_result)
extra_zeros = '0' * (given_len - num_hex_chars) # may not get used..
return ('0x' + hex_result if num_hex_chars == given_len else
'?' * given_len if num_hex_chars > given_len else
'0x' + extra_zeros + hex_result if num_hex_chars < given_len else
None)
Ejemplos:
padded_hex(42,4) # result '0x002a'
hex(15) # result '0xf'
padded_hex(15,1) # result '0xf'
Mientras que esto es lo suficientemente claro para mí y se ajusta a mi caso de uso (una herramienta de prueba simple para una impresora simple) No puedo evitar pensar que hay mucho margen de mejora y esto podría reducirse a algo muy conciso.
¿Qué otros enfoques hay para este problema?
¿Es posible escribir esto como una cadena de formato en python 3.6? –
@RichardNeumann: Sí, ¿lo has probado? –
Sí, pero sin éxito, ya que no puedo descifrar la sintaxis correcta para él: 'value = 42; relleno = 6; f "{value: # 0 {padding} x}" 'arroja un error de sintaxis:' File "", línea 1 f "{value: # 0 {padding} x}" ^ SyntaxError: sintaxis inválida' –