Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich in Python ganze Zahlen in Byte-Strings und zurück konvertieren?

Wie kann ich in Python ganze Zahlen in Byte-Strings und zurück konvertieren?

Linda Hamilton
Linda HamiltonOriginal
2024-10-20 14:52:02766Durchsuche

How Can I Convert Integers to Byte Strings and Back in Python?

Erstellen von Byte-Strings mit „bytes(n)“

Die Funktion „bytes(n)“ in Python 3 konvertiert keine Ganzzahl zu seiner Binärdarstellung, sondern erstellt stattdessen eine Bytefolge der Länge n, gefüllt mit Nullbytes (b'x00'). Dieses Verhalten stammt aus Python 3.2, wo die Methode „to_bytes()“ als Mittel zum Codieren von Ganzzahlen in Bytes eingeführt wurde.

To_Bytes und To_Bytes

Die Methode „to_bytes ()“-Methode ermöglicht die explizite Konvertierung einer Ganzzahl in eine Byte-Darstellung unter Angabe der Byte-Reihenfolge (Big-Endian oder Little-Endian) und der Länge. Zum Beispiel:

<code class="python">(1024).to_bytes(2, byteorder='big') == b'\x04\x00'</code>

From_Bytes und From_Bytes

Die komplementäre Methode „from_bytes()“ kann eine Bytefolge zurück in eine Ganzzahl umwandeln:

<code class="python">int.from_bytes(b'\x04\x00', 'big') == 1024</code>

Ganzzahlen ohne Vorzeichen

Die Methode „to_bytes()“ funktioniert für nicht negative (vorzeichenlose) Ganzzahlen. Um vorzeichenbehaftete Ganzzahlen zu verarbeiten, ist ein etwas anderer Ansatz erforderlich:

<code class="python">def int_to_bytes(number: int) -> bytes:
    return number.to_bytes(length=(8 + (number + (number < 0)).bit_length()) // 8, byteorder='big', signed=True)

def int_from_bytes(binary_data: bytes) -> Optional[int]:
    return int.from_bytes(binary_data, byteorder='big', signed=True)</code>

Mit diesen Funktionen können Sie vorzeichenbehaftete Ganzzahlen in und aus Bytesequenzen kodieren und dekodieren.

Das obige ist der detaillierte Inhalt vonWie kann ich in Python ganze Zahlen in Byte-Strings und zurück konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn