Seite 1 von 1

integer.to_bytes: seltsame Ergebnisse

Verfasst: Samstag 24. April 2021, 09:54
von FindeDenFehler
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)

Re: integer.to_bytes: seltsame Ergebnisse

Verfasst: Samstag 24. April 2021, 10:12
von __deets__
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.