Seite 1 von 1

einzelne bytes in string ersetzen

Verfasst: Mittwoch 13. April 2005, 12:34
von Rider
hi!

ich hab einen string in hex - sagen wir:
string = "\x30\x31\x32\x33\x34"

jetzt will ich von hinten angefangen jedes byte mit \x55 ersetzen.
so, dass ich nach und nach bekomme:

string2 = "\x30\x31\x32\x33\x55"
string3 = "\x30\x31\x32\x55\x34"
string4 = "\x30\x31\x55\x33\x34"
string5 = "\x30\x55\x32\x33\x34"
string6 = "\x55\x31\x32\x33\x34"

wäre über bissl hilfe sehr dankbar,
grüße,
rider

Verfasst: Mittwoch 13. April 2005, 12:42
von Gast
ok hab zumindest mal den part hinbekommen die hex bytes zu ersetzen. '...' musste ich statt "..." nehmen.

--------------
s = "\x41\x42\x43\x44\x45"

print " % s" % s

s = s.replace('\x41', '\x42')

print " % s" % s

--------------

gibt mir:

ABCDE
BBCDE

das ja schonmal fein jetz will ich das ganze nur noch byte für byte rückwärts ersetzen. also nicht '\x41' sd. allgemein jedes byte von hinten her^^

Verfasst: Mittwoch 13. April 2005, 12:53
von joe
Hi!
Anonymous hat geschrieben: ABCDE
BBCDE

das ja schonmal fein jetz will ich das ganze nur noch byte für byte rückwärts ersetzen. also nicht '\x41' sd. allgemein jedes byte von hinten her^^
Vielleicht so.

Code: Alles auswählen

s = "\x41\x42\x43\x44\x45" 
for i in range(len(s),0,-1):
    sNeu = s[:i-1] + "\x42" + s[i:]
    print sNeu
joe

Verfasst: Mittwoch 13. April 2005, 13:23
von Gast
yeah thx it worx :D

Verfasst: Mittwoch 13. April 2005, 13:30
von mawe
Hi!

Oder

Code: Alles auswählen

s = "\x41\x42\x43\x44\x45"
for i in range(len(s)-1,-1,-1):
    sNeu = s.replace(s[i], "\x42")
    print sNeu
Gruß, mawe

Verfasst: Mittwoch 13. April 2005, 13:35
von joe
mawe hat geschrieben:

Code: Alles auswählen

s = "\x41\x42\x43\x44\x45"
for i in range(len(s)-1,-1,-1):
    sNeu = s.replace(s[i], "\x42")
    print sNeu
Das klappt aber nur für diesen ganz speziellen fall. Kommt auch nur ein zeichen im ursprungsstring 2mal vor, gehts schon nicht.
joe