我有两个十六进制字符串。我需要在它们之间进行XOR
操作。
我的六弦字符串,
a = "1A6F2D31567C80644A5BEF2D50B986B";
b = "EF737F481FC7CDAE7C8B40837C80644";
如何在它们之间进行XOR操作? 你能给出一些指导方针吗?
答案 0 :(得分:12)
这适用于任何基地:
>> (a.to_i(16) ^ b.to_i(16)).to_s(16)
=> "f51c527949bb4dca36d0afae2c39e2f"
但您可以将String#hex用于十六进制字符串。
答案 1 :(得分:9)
a = "1A6F2D31567C80644A5BEF2D50B986B"
b = "EF737F481FC7CDAE7C8B40837C80644"
a.hex ^ b.hex
#or (a.hex ^ b.hex).to_s(16)
答案 2 :(得分:1)
您没有特别询问,但您可能希望输出String与输入字符串的长度相同填充前导零。因此,建立在steenslag的光滑答案上(并调整输入值以说明潜在问题):
a = "14ef"
b = "1ca3"
(a.hex ^ b.hex).to_s(16)
# "84c"
(a.hex ^ b.hex).to_s(16).rjust(a.length, '0')
# "084c"