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

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

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

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])

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

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