2017-12-05 2 views
0

Ich habe zwei Byte-Typ-Variable, die ich verkettet habe (getrennt durch ein Leerzeichen), so dass ich es als eine Variable an einen Server senden kann (Socket-Programmierung). Was ich herausfinden möchte, ist, wie man sie dann trennt und ihren ursprünglichen Variablen mit regulären Ausdrücken zuordnet. Ich habe regular expressions parsing a binary file konsultiert, aber es würde nicht für mich arbeiten. Here ist mein Ausgang nach dem Ausdruck als so nur versucht, die Chiffre VariableEine Binärdatei mit regulären Ausdrücken analysieren?

ciphertext = re.match(b'\S', ciphertext) 

Es ist allgemein paßt die ersten paar Zeichen nur zu erhalten und gibt ein Objekt, das nicht das, was ich will. Was mache ich falsch?

bearbeiten: Ich mache es wahrscheinlich auf die harte Tour. Ehrlich gesagt, jede Empfehlung, wie 2 Bytes Objekte über einen Socket mit UDP gesendet werden. Es erweist sich als sehr schwierig

+0

Bitte fügen Sie Ihre Ausgabe in Ihre Frage ein, nicht als Link zu einem Screenshot. –

+0

Aber zusammenfassend ist der Grund, warum Sie ein Objekt bekommen, weil das ist, was 're.match' zurückgibt. Sie erhalten ein 'match object' (oder' None', falls die Zeichenkette nicht übereinstimmt) zurück, mit dem Sie mit dem passenden Text arbeiten können. Ich bin mir nicht ganz sicher, was Sie mit diesem Anruf erwartet haben. –

Antwort

0

Warum verwenden Sie Regex, um dies zu tun ?. Sie sollten am struct Modul einen Blick:

In [1]: import struct 

In [2]: magic = b'\xcf\xfa\xed\xfe' 

In [3]: decoded = struct.unpack('<I', magic)[0] 

In [4]: hex(decoded) 
Out[4]: '0xfeedfacf' 

Auch können Sie this Rezept zum Dekodieren von binären Dateien

+0

Kann ich Strukturen verwenden, um zwei Byte-Objekte zu einer Variablen zu kombinieren, die später wieder getrennt werden kann? Wenn ich den gesamten Wert aus jeder Variablen kopieren und in eine Struktur einfügen könnte, wäre das perfekt, aber die Werte werden weiterhin abgeschnitten. – Fullmetal7777

0

am Ende mit str.rpartition verwenden, um meine Probleme zu lösen. War nicht die offensichtlichste Antwort, aber es hat funktioniert.

Verwandte Themen