Ich möchte eine Ganzzahl (das ist <= 255) zu einer Hex-String-Darstellung machen
zB: Ich möchte ein- 65
und aussteigen '\x41'
oder 255
aussteigen '\xff'
.
Ich habe versucht, dies mit der struct.pack('c',
65 zu tun )
, aber das drosselt alles oben, 9
da es eine einzelne Zeichenkette aufnehmen möchte.
chr
beinhaltet überhaupt kein ASCII - es nimmt einfach eine Zahl und erstellt einen Ein-Byte-Bytestring, bei dem der Ordnungswert des Bytes die Zahl ist. ASCII- und ASCII-kompatible Codierungen kommen beim Schreiben und Anzeigen von Bytestrings ins Spiel.'A'
andere Art des Schreibens und Anzeigens machen'\x41'
. Alles, wasstr
wirklich wichtig ist, ist die Tatsache, dass dies fünfundsechzig ist. Um die Dinge für den Menschen verständlich und nutzbar zu machen, wird es oft zu einem A.Dadurch wird eine Ganzzahl in eine zweistellige Hex-Zeichenfolge mit dem Präfix 0x konvertiert:
quelle
Was ist mit
hex()
?Wenn Sie wirklich
\
vorne haben möchten, können Sie Folgendes tun:quelle
repr(chr(255)) # '\xff'
erreicht dies auchVersuchen:
oder
In der Python-Dokumentation heißt es: "Behalten Sie dies unter Ihrem Kopfkissen: http://docs.python.org/library/index.html "
quelle
Lassen Sie mich diesen hinzufügen, denn manchmal möchten Sie nur die einstellige Darstellung:
Und jetzt können Sie mit den neuen
f''
Formatzeichenfolgen Folgendes tun:quelle
Wenn Sie eine Struktur mit einem Wert <255 (ein Byte ohne Vorzeichen, uint8_t) packen und am Ende eine Zeichenfolge mit einem Zeichen erhalten möchten, suchen Sie wahrscheinlich nach dem Format B anstelle von c . C konvertiert ein Zeichen in eine Zeichenfolge (für sich genommen nicht allzu nützlich), während B eine Ganzzahl konvertiert.
(Und ja, 65 ist \ x41, nicht \ x65.)
Die struct-Klasse verwaltet auch bequem Endianness für die Kommunikation oder andere Zwecke.
quelle
Beachten Sie, dass bei großen Werten
hex()
immer noch funktioniert (einige andere Antworten nicht):Python 2:
0x4354467b746f6f5f736d616c6c3f7dL
Python 3:
0x4354467b746f6f5f736d616c6c3f7d
Für eine entschlüsselte RSA-Nachricht könnte man Folgendes tun:
quelle
Das hat bei mir am besten funktioniert
Ändern Sie die (2), wenn Sie eine Zahl mit einer größeren Breite wünschen (2 steht für 2 hexadezimale Zeichen), sodass 3 Folgendes ergibt
quelle
Ich wollte eine zufällige Ganzzahl, die in eine sechsstellige Hex-Zeichenfolge mit einem # am Anfang umgewandelt wurde. Um das zu bekommen, habe ich es benutzt
quelle
"#%6x" % random.randint(0x0, 0xFFFFFF)
. (Es fehlt ein%
vorher6
undrandint
nimmt 2 Parameter - untere und obere Schranken-)Mit
format()
, anhand von Formatbeispielen , können wir Folgendes tun:quelle
Beispielsweise:
quelle
Sie können auch eine beliebige Zahl in einer beliebigen Basis in ein Hex umwandeln. Verwenden Sie diesen einzeiligen Code hier, es ist einfach und unkompliziert zu verwenden:
hex(int(n,x)).replace("0x","")
Sie haben eine Zeichenfolge
n
, die Ihre Nummer undx
die Basis dieser Nummer ist. Ändern Sie es zuerst in Integer und dann in Hex, aber Hex hat es0x
am ersten, alsoreplace
entfernen wir es.quelle
Als alternative Darstellung können Sie verwenden
quelle