integer.to_bytes: seltsame Ergebnisse

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
FindeDenFehler
User
Beiträge: 1
Registriert: Samstag 24. April 2021, 08:46

Hallo und guten Tag,

zum Zweck einer Datenübertragung müssen verschiedene Datenstukturen in einem Byte-Array zusammengeführt werden.

Die eingebaute Funktion int.to_bytes(length, byteorder, *, signed=False) aus https://docs.python.org/3/library/stdtypes.html)
schien ein geeignetes Werkzeug zu sein.

Beispiele funktionieren:

Code: Alles auswählen

>>> value = 2023
>>> value.to_bytes(2, 'big')
b'\x07\xe7'
oder aber nicht. Eine willkürliche Zahl produziert:

Code: Alles auswählen

>>> value=1341
>>> value.to_bytes(2, 'big')
b'\x05='
es sollte
b'\x05\x3D'
zu sehen sein.

Gibt es eine Erklärung warum int.to_bytes so unterschiedlich reagiert?

Oder gibt es eine andere Methode zuverlässig eine beliebige Integer-Zahl (signed/unsigned) in Bytes zu zerlegen und
wenn möglich unter Berücksichtigung der Byte-Anordnung ('big' oder 'little' endian)?

Vielen Dank für Eure Informationen

Zur Umgebung:
Python unter VisualStudio 2019
>>> import sys
>>> print("Python version")
Python version
>>> print (sys.version)
3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 14:05:16) [MSC v.1915 32 bit (Intel)]
>>> print("Version info.")
Version info.
>>> print (sys.version_info)
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das funktioniert schon. 0x3D ist ASCII =. Und so stellt Python das für Menschen dar, damit die Texte erkennen können. Aber Byte ist Byte ist Byte.

Ich würde im übrigen zum Modul struct raten.
Antworten