Thema: Delphi XOR-Resultat als String

Einzelnen Beitrag anzeigen

Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#5

Re: XOR-Resultat als String

  Alt 2. Nov 2006, 16:03
Zitat von TomDooley:
Hier nochmal ein Beispiel:

Delphi-Quellcode:
0000 //String1
1111 //String2
xor
1111 //erwartetes Resultat
Aehm, *so* gilt das nur für binäre Werte, wenn Du da einen String "1111" hast, dann steht im Speicher hexadezimal 31 31 31 31. Oder meinst Du einen String "#1#1#1#1"?

Zitat von TomDooley:
Da ich jetzt aber einzelne Zeichen in jeweils ein Byte konvertiere (Byte(String1[x]), sehen die String binär dargestellt wie folgt aus:

Delphi-Quellcode:
00000001 00000001 00000001 00000001 //String1 binär
00000000 00000000 00000000 00000000 //String2 binär
xor
00000001 00000001 00000001 00000001 //Resultat binär
01010101 //Resultat als String
Nein, dann steht im Speicher immer noch b00110001 b00110001 b00110001 b00110001

Zitat von TomDooley:
richtig wäre aber:

Delphi-Quellcode:
00010001 00010001 //String1 binär
00000000 00000000 //String2 binär
xor
00010001 00010001 //Resultat binär
1111 //Resultat als String --> korrekt
Du willst also einzelne Nibbles benutzen. Achtung: In ein Nibble passen nur Werte von Null bis 15. Bist Du sicher, dass Du mit diesem Wertebereich auskommst?
Was Du vermutlich willst, ist HexToInt. Für jedes resultierende Byte gibst Du ihm zwei Zeichen aus dem String zu fressen.
Damit kannst Du dann Deinen String in Schüben von acht Zeichen in DWORDs wandeln und jeweils passend XORen.
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat