einzelne bytes in string ersetzen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Rider

Mittwoch 13. April 2005, 12:34

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
Gast

Mittwoch 13. April 2005, 12:42

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^^
joe

Mittwoch 13. April 2005, 12:53

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
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Mittwoch 13. April 2005, 13:30

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
joe

Mittwoch 13. April 2005, 13:35

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
Antworten