2012-09-08 7 views
7

Ho due stringhe esadecimali. Devo eseguire l'operazione XOR tra di loro.come eseguire l'operazione XOR tra due stringhe esagonali?

miei hexa stringhe come,

a = "1A6F2D31567C80644A5BEF2D50B986B"; 
b = "EF737F481FC7CDAE7C8B40837C80644"; 

come fare l'operazione XOR tra di loro? Puoi dare qualche linea guida per farlo?

+0

l'output è un numero intero o un'altra stringa? – tokland

risposta

12

che avrebbe funzionato per qualsiasi base:

>> (a.to_i(16)^b.to_i(16)).to_s(16) 
=> "f51c527949bb4dca36d0afae2c39e2f" 

Ma è possibile utilizzare String#hex per le stringhe esadecimali.

9
a = "1A6F2D31567C80644A5BEF2D50B986B" 
b = "EF737F481FC7CDAE7C8B40837C80644" 
a.hex^b.hex 
#or (a.hex^b.hex).to_s(16) 
1

Non ha specificamente chiedere, ma si potrebbe desiderare la stringa di output per essere la stessa lunghezza come le corde di ingresso da padding zeri. Quindi, basandosi sulla risposta chiara di steenslag (e regolando i valori di input per illustrare il potenziale problema):

a = "14ef" 
b = "1ca3" 
(a.hex^b.hex).to_s(16) 
# "84c" 
(a.hex^b.hex).to_s(16).rjust(a.length, '0') 
# "084c" 
Problemi correlati