delete delete
Hallo!
Du musst zwischen der Darstellung und dem Inhalt unterscheiden:
Du musst zwischen der Darstellung und dem Inhalt unterscheiden:
Code: Alles auswählen
>>> "".join(map(chr, (192, 168, 1, 12)))
'\xc0\xa8\x01\x0c'
>>> chr(192)
'\xc0'
>>> repr("\xc0")
"'\\xc0'"
Das Leben ist wie ein Tennisball.
Die Sache ist die, dass in dem String nirgends \x78 steht. Diese Sequenz weist den Interpreter an, ein Byte mit dem Wert 120 in den String einzubauen. Ein "\x" + "78" hingegen bewirkt, dass da wirklich \x78 in dem String steht. Was du brauchst ist ord.zulu321 hat geschrieben:hex(120) würde 0x78 ergeben, weshalb ich die ersten beiden Stellen abschneiden muss um an die 78 zu kommen. scapy verlangt dort ausdrücklich \x78. Leider funktioniert das obige Konstrukt nicht, da er scheinbar nach "\x" sofort eine Zahl möchte. Auch "\xc0\xa8\x01" + hex(zähler)[1:] habe ich schon getestet, ohne Erfolg.
Code: Alles auswählen
"\xc0\xa8\x01" + ord(120)
Wobei das Beispiel irreführend ist, da Python in dem Fall sowieso schon repr anwendet um die Strings darzustellen.EyDu hat geschrieben:Du musst zwischen der Darstellung und dem Inhalt unterscheiden:
Wobei das Beispiel irreführend ist, da Python in dem Fall sowieso schon repr anwendet um die Strings darzustellen.[/quote]Darii hat geschrieben:Du musst zwischen der Darstellung und dem Inhalt unterscheiden:
Ich wollte auf das "\" hinaus, aber für einen Anfänger ist das Beispiel wohl wirklich etwas zu verwirrend. So etwas trifft es wohl besser:
Code: Alles auswählen
>>> x = "\\x50"
>>> y = "\x50"
>>> print x
\x50
>>> print y
P
Das Leben ist wie ein Tennisball.
Richtig. Denn "x" ist genau das selbe wie chr(120) oder "\x78". Das sind alles verschiedene Darstellungen für den selben Wertzulu321 hat geschrieben:Leider zu früh gefreut. Bei chr(120) gibt er das Zeichen 'x' aus und nimmt nicht mehr die Hex-Werte.
Code: Alles auswählen
>>> "\x78" == "x"
True
>>> chr(120) == "x"
True
>>>
Das Leben ist wie ein Tennisball.