2012-09-08 9 views
7

Mam dwa ciągi szesnastkowe. Muszę wykonać operację XOR między nimi.jak wykonać operację XOR między dwoma ciągami hexa?

moich heksa ciągów podobnych,

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

Jak wykonać operację XOR między nimi? Czy możesz podać jakieś wytyczne, aby to zrobić?

+0

wyjście jest liczbą całkowitą lub innym ciągiem? – tokland

Odpowiedz

12

To będzie działać na dowolnym systemie:

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

Ale można użyć String#hex ciągów szesnastkowych.

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

Nie specjalnie zapytać, ale może chcesz String wyjściowa taka sama długość jak ciągach przez dopełnienia zer wiodących. Tak, budując na gładkiej odpowiedzi steenslag (i dostosowując wartości wejściowe, aby zilustrować potencjalny problem):

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