Konvertieren von Hex-String in Int in Python
-
Verwenden Sie
int()
, um Hex in Int in Python zu konvertieren - Konvertieren einer Hex-Zeichenkette ohne Präfix in Python in Int
- Konvertierung einer Hex-Zeichenkette mit Präfix in Int in Python
- Little- und Big-Endian-Hex-String in Python in Int umwandeln
- Hex in vorzeichenbehaftete Ganzzahl in Python konvertieren
Dieses Tutorial demonstriert, wie man in Python die Hex-Zeichenkette in int
umwandelt. Es werden verschiedene Hex-Formate wie signed, little und big-endian, 0x
annotated hexadecimal und der Standard-Hex-String behandelt.
Verwenden Sie int()
, um Hex in Int in Python zu konvertieren
Die gebräuchlichste und effektivste Art, Hex in Python in eine ganze Zahl zu konvertieren, ist die Verwendung der Typumwandlungsfunktion int()
.
Diese Funktion akzeptiert zwei Argumente: ein obligatorisches Argument, das der zu konvertierende Wert ist, und ein zweites optionales Argument, das die Basis des Zahlenformats ist, wobei die Vorgabe 10
ist.
Andere Zahlenformate sind 2
für binär, 8
für oktal und 16
für hexadezimal. Wenn Sie 0
als Argument für den Basiswert angeben, wird das Zahlenformat aus dem Präfix des Wertes abgeleitet. Wenn kein Präfix vorhanden ist, wird der Wert automatisch als dezimal, 0b
für binär, 0o
für oktal und 0x
für hexadezimal erkannt.
Konvertieren einer Hex-Zeichenkette ohne Präfix in Python in Int
Wenn die hexadezimale Zeichenkette nicht vorangestellt ist, dann geben Sie den Basiswert der Funktion int()
mit 16 an.
Ein Beispiel:
hex_val = "beef101"
print(int(hex_val, 16))
Ausgabe:
200208641
Das Ergebnis ist die dezimale oder ganzzahlige Umwandlung des Hex-Werts beef101
.
Konvertierung einer Hex-Zeichenkette mit Präfix in Int in Python
Wenn die Hex-Zeichenkette ein Präfix 0x
hat, dann ändern Sie das Basiswert-Argument in 0
, um das Präfix automatisch zu erkennen.
Sie können immer noch 16
als Basis übergeben, aber wenn Sie es mit mehreren Werten mit unterschiedlichen Zahlenformaten zu tun haben, ist die Übergabe von 0
der beste Ansatz.
hex_val = "0xdeadcab"
print(int(hex_val, 0))
print(int(hex_val, 16))
Ausgabe:
233495723
233495723
Little- und Big-Endian-Hex-String in Python in Int umwandeln
Little-Endian- und Big-Endian-Byte-Ordnung sind zwei Arten von Ordnungssystemen für Hexadezimalzahlen. Die Standardreihenfolge ist Little-Endian, bei der die höchstwertige Zahl ganz rechts in der Sequenz steht, während Big-Endian genau das Gegenteil tut.
In Anbetracht dessen müssen wir nur den Big-Endian-Hexadezimalwert in einen Little-Endian-Wert konvertieren. Danach kann nun die übliche Konvertierung daran durchgeführt werden.
Um eine hexadezimale Big-Endian-Zeichenkette in eine Little-Endian-Zeichenkette zu konvertieren, verwenden Sie bytearray.fromhex()
und wenden die Funktion reverse()
auf das Ergebnis an. Anschließend konvertieren Sie den hexadezimalen Wert wieder in einen String und wandeln ihn in eine Ganzzahl um.
big_endian = "efbe"
def to_little(val):
little_hex = bytearray.fromhex(val)
little_hex.reverse()
print("Byte array format:", little_hex)
str_little = "".join(format(x, "02x") for x in little_hex)
return str_little
little_endian = to_little(big_endian)
print("Little endian hex:", little_endian)
print("Hex to int:", int(little_endian, 16))
Um diesen Codeblock zusammenzufassen:
- Rufen Sie
bytearray.fromhex()
auf, um den Big-Endian-Hex-String in einen Byte-Array-Hexadezimalwert zu konvertieren. - Reversieren Sie das Byte-Array, um das Big-Endian-Format in ein Little-Endian-Format zu konvertieren.
- Konvertieren Sie den Byte-Array-Wert zurück in einen Hex-String im Little-Endian-Format.
- Konvertieren Sie die Zeichenkette mit
int()
in eine Ganzzahl.
Ausgabe:
Byte array format: bytearray(b'\xbe\xef')
Little endian hex: beef
Hex to int: 48879
Hex in vorzeichenbehaftete Ganzzahl in Python konvertieren
Um ein beliebiges Zahlenformat in eine vorzeichenbehaftete Ganzzahl zu konvertieren, benötigen wir eine Operation namens Zweierkomplement, die eine bitweise mathematische Operation für vorzeichenbehaftete Zahlen ist.
Bevor wir also hexadezimal in eine vorzeichenbehaftete Ganzzahl konvertieren können, müssen wir eine Funktion definieren, die die Operation des Zweierkomplements ausführt.
def twosComplement_hex(hexval):
bits = 16 # Number of bits in a hexadecimal number format
val = int(hexval, bits)
if val & (1 << (bits - 1)):
val -= 1 << bits
return val
Das Bit ganz links in einem Binärwert wird als Bit mit Vorzeichen bezeichnet und bestimmt, ob die Ganzzahl positiv oder negativ ist. Diese Funktion reserviert dieses Bit als vorzeichenbehaftetes Bit und verschiebt die anderen Bits zum Ausgleich mit dem bitweisen Linksschiebeoperator <<
.
Nun geht es an die eigentliche Umwandlung des Hex-Wertes in vorzeichenbehaftete int.
hex_val1 = "ff"
hex_val2 = "ffff"
hex_val3 = "aaff"
def twosComplement_hex(hexval):
bits = 16
val = int(hexval, bits)
if val & (1 << (bits - 1)):
val -= 1 << bits
return val
print(twosComplement_hex(hex_val1))
print(twosComplement_hex(hex_val2))
print(twosComplement_hex(hex_val3))
Ausgabe:
255
-1
-21761
Jetzt haben wir die Konvertierung eines Hex-Strings in eine vorzeichenbehaftete Ganzzahl erreicht.
Zusammenfassend haben wir die Konvertierung verschiedener Typen von Hexadezimalformaten in vorzeichenbehaftete und vorzeichenlose Ganzzahlen behandelt. Verwenden Sie int()
mit den Argumenten value und base, um eine Hexadezimalzahl in eine Ganzzahl ohne Vorzeichen zu konvertieren.
Wenn die Hexadezimalzahl in einem Big-Endian-Format vorliegt, konvertieren Sie sie zuerst mit bytearray.fromhex()
und reverse()
in ein Little-Endian-Format.
Wenn Sie schließlich eine hexadezimale Zeichenkette in eine Ganzzahl mit Vorzeichen umwandeln müssen, führen Sie die Operation Zweierkomplement an dem hexadezimalen Wert durch, um einen Ganzzahlwert mit Vorzeichen zu erhalten.
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedInVerwandter Artikel - Python Hex
- Bitweises XOR von Hex-Zahlen in Python
- Konvertieren Sie Hex in Python in Base64
- Konvertieren Binär in Hex in Python
- Konvertieren Sie HEX in RGB in Python
- Konvertieren Sie Hex in ASCII in Python
- String zu Hex in Python