Liste Füllen bzw. ASCII Umwandlung

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
pychart
User
Beiträge: 17
Registriert: Dienstag 27. Dezember 2016, 16:40

Hallo,
ich habe zum Spaß die Funktionen 'int.from/to_bytes' etc angeschaut, jedoch habe ich eine Frage:
Beispiel von Sirius3 [...]:
Sirius3 hat geschrieben:

Code: Alles auswählen

>>> text = b"Hallo"
>>> int.from_bytes(text, "little")
478560411976
>>> (478560411976).to_bytes(5, "little")
b'Hallo'
Wie kann ich 'int.to_bytes()' ohne der Länge des eigentlichen Textes verwenden? Hier 5, da 'hallo' 5 Zeichen enthält, nicht?

Lieben Gruß
BlackJack

@pychart: Wenn es keine (führenden) Nullbytes geben kann, kann man sich das aus der Bitlänge der Zahl ausrechnen, wie viele Bytes die Zahl braucht. Und die Bitlänge kann man wie schon gesagt mit der `bit_length()`-Methode ermitteln.
pychart
User
Beiträge: 17
Registriert: Dienstag 27. Dezember 2016, 16:40

BlackJack hat geschrieben:@pychart: Wenn es keine (führenden) Nullbytes geben kann, kann man sich das aus der Bitlänge der Zahl ausrechnen, wie viele Bytes die Zahl braucht. Und die Bitlänge kann man wie schon gesagt mit der `bit_length()`-Methode ermitteln.
Wenn ich das am oben genannten Beispiel mache, kommt 39 raus, statt 5.

Code: Alles auswählen

(478560411976).bit_length()
 >>39
Sirius3
User
Beiträge: 17752
Registriert: Sonntag 21. Oktober 2012, 17:20

@pychart: das ist der Unterschied zwischen Bits und Bytes: 8 Bit = 1 Byte, 39 Bit -> (39+7)//8 = 5 Bytes
pychart
User
Beiträge: 17
Registriert: Dienstag 27. Dezember 2016, 16:40

Sirius3 hat geschrieben:@pychart: das ist der Unterschied zwischen Bits und Bytes: 8 Bit = 1 Byte, 39 Bit -> (39+7)//8 = 5 Bytes
Gibt es hier keinen "Danke"-Button? :) Vielen Dank!
Antworten