XOR-Hex-String in JAVA unterschiedlicher Länge
Ich habe zwei strings
String s1="426F62";
String s2="457665";
Des strings in hex-Darstellung. Ich möchte XOR Ihnen. XORing der Regel von Zeichen gibt das richtige Ergebnis für andere außer F XOR 6
.(Es gibt 112 sollte die Antwort sein 9)
Bitte sagen Sie mir den richtigen Weg, Sie zu implementieren, in JAVA
EDIT: Umwandlung in " int " und " xoring funktioniert. Aber wie xor, wenn zwei strings unterschiedlicher Länge.
- Nur Sie kann entscheiden, was es bedeutet, XOR strings unterschiedlicher Länge. Höchstwahrscheinlich werden Sie wollen pad (zumindest konzeptionell) die kürzere Zeichenfolge mit Nullen, aber Sie haben zu entscheiden, ob pad auf der linken oder auf der rechten Seite.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eher als XORing der Unicode Darstellungen, nur konvertieren Sie jedes Zeichen in der Zahl die es repräsentiert, in hex, XOR diejenigen, konvertieren Sie es dann zurück zu hex. Können Sie noch tun, ein Zeichen zu einem Zeitpunkt:
Beachten Sie, dass dies funktionieren sollte wie lange die strings sind (solange Sie die gleiche Länge), und muss nie befürchten negative Werte - Sie werden immer nur das Ergebnis von XORing jedem paar von Zeichen.
Versuchen Sie dies:
Warum speichern Sie hex-Werte als strings? es wäre eine viel bessere Idee zu vertreten hex-zahlen als hex-Integer oder Long.
Die Tatsache, dass es gibt richtige Ergebnis ein Artefakt der jeweiligen Zeichencodierung für Ziffern und Buchstaben. Sollten Sie wandeln die zahlen zu
BigInteger
,XOR
Sie Sie, und konvertieren Sie zurück zuString
:BEARBEITEN (in Reaktion auf Jon Skeet Kommentar): Mit
BigInteger
stattint
zu Adresse, den vier-byte-Grenze-Problem.int
mitBigInteger
zu Adresse, den vier-byte-Beschränkung. Danke!toString(16)
"Formate" negative zahlen als erwartet.Eine weitere option, die hilfreich sein könnten, je nach Größe des strings