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:
(1024).to_bytes(2, byteorder='big') == b'\x04\x00'
From_Bytes und From_Bytes
Die komplementäre Methode „from_bytes()“ kann eine Bytefolge wieder in eine Ganzzahl umwandeln:
int.from_bytes(b'\x04\x00', 'big') == 1024
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:
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)
Mit diesen Funktionen können Sie vorzeichenbehaftete Ganzzahlen in und aus Bytesequenzen kodieren und dekodieren.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3