2012-09-08 24 views
7

Tengo dos cadenas hexadecimales. Necesito hacer la operación XOR entre ellas.cómo hacer la operación XOR entre dos cadenas hexadecimales?

Mis hexa cadenas como,

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

cómo hacer la operación XOR entre ellos? ¿Puedes dar algunas pautas para hacer eso?

+0

la salida es un entero o de otra cadena? – tokland

Respuesta

12

que trabajaría para cualquier base:

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

Pero se puede utilizar para String#hex cadenas hexadecimales.

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

Usted no pidió específicamente, pero es posible que desee la cadena de salida que es la misma longitud que las cadenas de entrada por relleno ceros a la izquierda. Así, basándose en respuesta mancha de steenslag (y el ajuste de los valores de entrada para ilustrar el problema potencial):

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