delete delete
Verfasst: Mittwoch 3. Februar 2010, 01:03
delete delete
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Code: Alles auswählen
>>> "".join(map(chr, (192, 168, 1, 12)))
'\xc0\xa8\x01\x0c'
>>> chr(192)
'\xc0'
>>> repr("\xc0")
"'\\xc0'"
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:
Code: Alles auswählen
>>> x = "\\x50"
>>> y = "\x50"
>>> print x
\x50
>>> print y
P
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
>>>
Upps..da hab ich die Funktionen durcheinandergeworfen, chr ist das was du suchst und ord ist die Umkehrfunktion dazuzulu321 hat geschrieben:ord() scheint nur einzelne Zeichen zu mögen.