Wie konvertiert man einen int in einen hexadezimalen String?

Ich möchte eine ganze Zahl (die <= 255), in eine Hex-String-Darstellung zu nehmen

z.B.: Ich möchte 65 eingeben und '\x41', oder 255 und '\xff' erhalten.

Ich habe versucht, dies mit struct.pack('c',65) zu tun, aber das erstickt alles über 9, da es eine einzelne Zeichenkette aufnehmen will.

Lösung

Sie suchen nach der Funktion "chr".

Sie scheinen dezimale Darstellungen von ganzen Zahlen und hexadezimale Darstellungen von ganzen Zahlen zu vermischen, daher ist nicht ganz klar, was Sie brauchen. Anhand der Beschreibung, die Sie gegeben haben, denke ich, dass einer dieser Schnipsel zeigt, was Sie wollen.

>>> chr(0x65) == '\x65'
True

>>> hex(65)
'0x41'
>>> chr(65) == '\x41'
True

Beachten Sie, dass dies etwas ganz anderes ist als eine Zeichenkette, die eine ganze Zahl in hexadezimaler Form enthält. Wenn es das ist, was Sie wollen, verwenden Sie das hex builtin.

Kommentare (5)

Was ist mit hex()`?

hex(255)  # 0xff

Wenn Sie wirklich \ vorangestellt haben wollen, können Sie das tun:

print '\\' + hex(255)[1:]
Kommentare (1)

Versuchen Sie es:

"0x%x" % 255 # => 0xff

oder

"0x%X" % 255 # => 0xFF

Die Python-Dokumentation sagt: "keep this under Your pillow: http://docs.python.org/library/index.html"

Kommentare (0)