Python Funktion funktioniert nur mit Strings und nicht mit Bytes?
Hallo,
Ich habe ein Python Problem.
Ich habe eine Funktion geschrieben und sie Mit Strings getestet und wollte sie nun auf Bytes umbauen. Das funktioniert aus einem mir gerade nicht lösbaren Grund
Funktion:
def createBites(Bytes, BiteLegth):
tmp_1 = Bytes
tmp_2 = bytes()
BiteList = []
for i in tmp_1:
tmp_2 += i
if len(tmp_2) == BiteLegth:
BiteList.append(tmp_2)
tmp_2 = bytes()
if len(tmp_2) > 0:
BiteList.append(tmp_2)
return BiteList
Fehlermeldung:
File "c:\projects\Python_Projects\dw\main.py", line 69, in createBites
tmp_2 += i
TypeError: can't concat int to bytes
Ich brauche nur eine funktionierende Lösung, da ich an meinem Projekt nicht weiter arbeiten kann.
Danke für jede hilfreich Antwort!
Welchen Datentypen hat der Parameter „Bytes“?
Die Variable ist natürlich mit Bytes gefüllt.
2 Antworten
Hallo TriceraTobs,
zur Veränderung von Bytes solltest du ein „bytearray“ verwenden.
Hier findest du weitere Informationen: https://stackoverflow.com/questions/28130722/python-bytes-concatenation
Bei einem String tmp_1 ist jedes Element i wieder ein String (mit einem Zeichen), und das lässt sich problemlos aneinander hängen.
Ein bytes-Objekt tmp_1 enthält aber kleine Integer i, und die Fehlermeltung sagt Dir, dass bytes+int nicht funktioniert.
Um das an ein bytes-Objekt anzuhängen, brauchst du ein bytes-Objekt, das nur das Element i enthält. Dazu bastelst Du ein 1-Tupel (i,) und wandelst es in ein bytes-Objekt um:
for i in tmp_1:
tmp_2 += bytes( (i,) )