Struct.Fehler: argument für 's' muss ein bytes-Objekt bereits geliefert
Ich habe das arbeiten in einem TCP/IP-Verbindung Programm-Ding in Python und kam über die Notwendigkeit der Verwendung von Struct. Und so habe ich importiert das Modul und kam nach einiger Zeit zu einem ganz bestimmten Thema. Ich bekomme die Fehlermeldung angegeben in te Titel wenn ich den code unten, in der Sie arbeiten sollte, nachdem ich überprüft einige andere Antworten und Dokumentationen.
import struct
string = "blab"
s = struct.Struct(b'4s')
packed_data = s.pack(string)
print(packed_data)
Soweit ich gefunden habe, sollte das Problem behoben werden, indem die Zeichenfolge in die variable s mit 'b' oder mit der bytes()
Funktion analysieren "utf-8" als Kodierung argument. Beides ausprobiert, gleiche Fehler.
Ich habe keine Ahnung, was falsch sein könnte, so bin ich etwas fehlt? Ich konnte nicht finden, relevante Informationen online zu diesem Thema, also das ist, warum ich bin Entsendung hier jetzt.
Jede Hilfe ist willkommen und vielen Dank im Voraus!
- versuchen
str = b"blab"
(watch out für die variable namestring
ist ein Kern-Modul namensstring
)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Minimal, das problem ist, dass Sie die "b" an der falschen Stelle. Sie setzte es auf den format-string, wenn Sie wirklich Ihre Daten verpackt werden, muss ein byte-string.
Aber auch das ist problematisch. Angenommen dein string ist nicht in der
ascii
Zeichensatz... können sagen, das Griechische, dann die utf8 enocded string ist länger als 4 bytes und schreiben Sie eine abgeschnittene WertWenn Sie wirklich brauchen, um zu beschränken, um 4 bytes, dann konvertieren Sie die ursprüngliche Zeichenfolge mit
ascii
stattutf-8
so, dass jeder unencodable unicode-Zeichen erhöhen in Ausnahme richtige Weg.Sollte in beide Py2 und 3
Aus der Unicode-HowTo für 2.7.11 Python:
https://docs.python.org/2/howto/unicode.html