AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XOR-Resultat als String

Ein Thema von TomDooley · begonnen am 31. Okt 2006 · letzter Beitrag vom 2. Nov 2006
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von OldGrumpy
OldGrumpy

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

Re: XOR-Resultat als String

  Alt 31. Okt 2006, 16:06
Das kommt ganz auf Deinen Wertebereich an. Jede Hexziffer kann einen von 16 Zuständen anzeigen. Wenn Du nicht mehr als 16 unterschiedliche Zeichen in Deinen Keys hast (oder Werte, oder was auch immer), dann kannst Du das zusammenfassen. Einfach jedes zweite Zeichen "wegmachen" hat mehrere gravierende Nachteile, zum einen musst Du dann annehmen dass der Wertebereich auf jeden Fall maximal von 0 bis 15 geht. Wenn das XOR den Wert 16 ergibt (Hex: $10), würdest du die 1 "wegmachen" und es bleibt nur eine Null übrig.

Auch wenn ich jetzt schon weiss, was Du antworten wirst: Ohne mehr Infos kanns keine richtige Antwort geben.
"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
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#12

Re: XOR-Resultat als String

  Alt 31. Okt 2006, 18:16
Das würde auch gehen:

Delphi-Quellcode:
result:='';
for i := 1 to x do
  result := result+IntToHex( ( (ord(Key1[x]) xor ord(Key2[x]) ),2);

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
TomDooley

Registriert seit: 26. Jan 2004
124 Beiträge
 
#13

Re: XOR-Resultat als String

  Alt 2. Nov 2006, 15:19
Hier nochmal ein Beispiel:

Delphi-Quellcode:
0000 //String1
1111 //String2
xor
1111 //erwartetes Resultat
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
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
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#14

Re: XOR-Resultat als String

  Alt 2. Nov 2006, 15:53
Hallo,

Du kannst bei IntToHex angeben, wie viele Stellen mindestens verwendet werden. Wenn Du zwei angibst, wird eben mit 0 aufgefüllt.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

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

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
TomDooley

Registriert seit: 26. Jan 2004
124 Beiträge
 
#16

Re: XOR-Resultat als String

  Alt 2. Nov 2006, 17:13
Zitat:
Aehm, *so* gilt das nur für binäre Werte
Das ist mir klar, jedoch suche ich eben eine Funktion welche mir die Arbeit (Umwandlung für xor, xor, Umwandlung in String) abnimmt.
Zitat:
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?
Ja, das bin ich. Für die Eingabe stehen nur die "Hex-Ziffern" 0-F zur Verfügung.

Ich hab's bei mir jetzt mal so gelöst:
Delphi-Quellcode:
  for i := 1 to x do
    Result := Result + IntToHex((StrToInt('$'+ Key1[x]) xor StrToInt('$'+ Key1[x])),1);
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz