Ich verwende Twisted, um Daten von einem Socket zu empfangen. Meine Protokollklasse erbt vom Protokoll.
Da es in Python 2 keinen Byte-Typ gibt.*, der Typ der empfangenen Daten ist str. Len (data) gibt mir natürlich die Länge der Zeichenfolge an, aber woher weiß ich das? die Anzahl der empfangenen Bytes? Es gibt keine Größe oder etwas Äquivalent, das erlaubt mir die Anzahl der Bytes zu kennen? Oder sollte ich bedenken, dass die Anzahl der Bytes unabhängig von der Plattform 2 * len (Daten) sein wird?
Danke im Voraus
Antworten:
3 für die Antwort № 1In Python 2
str
→ eine Folge von Bytes, die manchmal als ASCII-Text verwendet wirdbytes
→ ein Alias fürstr
(verfügbar in Python 2.6 und höher)unicode
→ eine Folge von Unicode-Code-Einheiten (UCS-2 oder UCS-4, abhängig von den Optionen für die Kompilierzeit, standardmäßig UCS-2)
In Python 3,
str
→ eine Folge von Unicode-Code-Einheiten (UCS-4)bytes
→ eine Folge von Bytesunicode
→ so etwas nicht mehr, meinst dustr
Denken Sie an den Typ, an den übergeben wird dataReceived
wie bytes
. Es ist bytes
in Python 2.x wird es sein bytes
wenn Twisted auf Python 3.x portiert wurde.
Daher ist die Länge des empfangenen Segments in Bytes einfach len(data)
.
4 für die Antwort № 2
Die Länge des Strings ist die Länge in Bytes.