Wie konvertiere ich Dezimalzahlen in Hex im folgenden Format (mindestens zwei Ziffern, mit Nullen aufgefüllt, ohne 0x-Präfix)?
Eingabe: 255
Ausgabe:ff
Eingabe: 2
Ausgabe:02
Ich habe es versucht, hex(int)[2:]
aber es scheint, dass es das erste Beispiel zeigt, aber nicht das zweite.
Antworten:
Verwenden Sie die
format()
Funktion mit einem'02x'
Format.>>> format(255, '02x') 'ff' >>> format(2, '02x') '02'
Der
02
Teil weistformat()
an, mindestens zwei Ziffern zu verwenden und Nullen zu verwenden, um die Längex
aufzufüllen. Dies bedeutet hexadezimal in Kleinbuchstaben.Die Mini-Sprache
X
für die Formatspezifikation bietet Ihnen auch die Möglichkeit, Hex in Großbuchstaben auszugeben, und Sie können der Feldbreite#
ein0x
oder ein0X
Präfix voranstellen (je nachdem, ob Sie es verwendet habenx
oderX
als Formatierer). Beachten Sie einfach, dass Sie die Feldbreite anpassen müssen, um diese zusätzlichen 2 Zeichen zu berücksichtigen:>>> format(255, '02X') 'FF' >>> format(255, '#04x') '0xff' >>> format(255, '#04X') '0XFF'
quelle
'{:02x}'.format(255)
str.format()
nur einen einzelnen Slot analysieren, erledigt Python zusätzliche Arbeit (da dies intern immer nochformat(255, '02x')
für diesen einen Slot verwendet wird).Ich denke, das ist was du willst:
>>> def twoDigitHex( number ): ... return '%02x' % number ... >>> twoDigitHex( 2 ) '02' >>> twoDigitHex( 255 ) 'ff'
quelle
Eine andere Lösung ist:
>>> "".join(list(hex(255))[2:]) 'ff'
Wahrscheinlich eine archaische Antwort, aber funktional.
quelle
"".join(list(hex(2))[2:])
wertet'2'
nicht aus'02'
.hex(int)[2:]
der Frage. Warum machst du eine Liste, um sie wieder aufzunehmen?