Swift 3 中两位十六进制字符串的按位异或

Bitwise XOR on two digit hex string in Swift 3

我想从数组的第一个两个字符串中获取按位异或值,然后第一个两个的结果应该与数组的第三个元素进行异或,结果应该与数组的第四个元素进行异或,依此类推..

数组是["a2", "09", "00", "00", "00", "01", "00", "00", "00", "10", "00"]

最终答案也将是按位异或值

请帮忙。

提前致谢

您可以使用 Int(String, radix: 16) 将十六进制字符串数字转换为 Int。使用 Int 的初始化器,您可以使用 flatMap 将十六进制字符串转换为整数。

然后您可以使用 reduce 遍历数组并获取当前结果和数组的下一个元素的 XOR 值(使用内置的 ^ 运算符)。

let hexStrings = ["a2", "09", "00", "00", "00", "01", "00", "00", "00", "10", "00"]
let numbers = hexStrings.flatMap{Int([=10=], radix: 16)}
numbers
let xor = numbers.reduce(0, {[=10=]^}) //186 as it should be

如果你需要十六进制的最终值,你可以使用String(Int, radix:16):

let xorHex = String(xor, radix: 16) // "ba"

您可以使用以下代码获取结果

let numbers = pairs.flatMap{Int([=10=], radix: 16)}

let xor = numbers.reduce(0, {[=11=]^})

let result = String(format: "%02x", xor)