我想从前两个数组的字符串得到Bitwise XOR值,然后第一个二的结果应该与数组的第三个元素进行异或,结果应该与数组的第四个元素进行异或,依此类推..
数组为["a2", "09", "00", "00", "00", "01", "00", "00", "00", "10", "00"]
最终答案也将是bitWise XOR值
请帮忙。
提前致谢
答案 0 :(得分:1)
您可以使用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($0, radix: 16)}
numbers
let xor = numbers.reduce(0, {$0^$1}) //186 as it should be
如果您需要十六进制的最终值,可以使用String(Int, radix:16)
:
let xorHex = String(xor, radix: 16) // "ba"
答案 1 :(得分:0)
您可以使用以下代码获取结果
let numbers = pairs.flatMap{Int($0, radix: 16)}
let xor = numbers.reduce(0, {$0^$1})
let result = String(format: "%02x", xor)