2016-06-15 18 views
0

Ich bin auf der Suche nach etwas, um ein großes unsigned int in ein Byte-Array zu konvertieren, so dass ich es über einen seriellen Port senden kann.Convert unsigned long int beliebiger Größe in Byte-String

In Python 3.2 ist die Funktion to_bytes eingebaut, um lange Ganzzahlen zu konvertieren, um ein Byte-Array zurückzugeben. Dies ist jedoch in Python 2.7 nicht verfügbar. Ebenso hat python 2.7 eine struct lib, aber diese Bibliothek behandelt keine beliebig großen Ints. Es gibt einen ähnlichen question auf Stapelüberlauf, jedoch akzeptiert die akzeptierte Antwort Gurke. Das würde mir nicht helfen, da ich den Long Int senden möchte, ohne Kompression zu verlieren. Ich kann natürlich über den Int iterieren und mir etwas Brauchbares einfallen lassen, aber ich hatte gehofft, dass etwas zur Verfügung steht, um das schwere Heben für mich zu bewältigen.

Antwort

1

Mit dem x Formatbezeich es zu einer hex Zeichenfolge zu konvertieren, ein führendes 0 hinzufügen, wenn die Länge ungerade ist, und sie dann als 'hex' dekodieren zu Bytes drehen. Nicht der schnellste Weg, aber einfach.

>>> '{:x}'.format(20L).decode('hex') 
'\x14' 
Verwandte Themen