Ich habe diese einfache Funktion geschrieben:
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)
Beispiele:
padded_hex(42,4) # result '0x002a'
hex(15) # result '0xf'
padded_hex(15,1) # result '0xf'
Obwohl dies für mich klar genug ist und zu meinem Anwendungsfall passt (ein einfaches Testwerkzeug für einen einfachen Drucker), kann ich nicht anders, als zu glauben, dass es viel Raum für Verbesserungen gibt, und dies könnte auf etwas sehr Prägnantes reduziert werden.
Welche anderen Ansätze gibt es für dieses Problem?