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)
我想从数组的第一个两个字符串中获取按位异或值,然后第一个两个的结果应该与数组的第三个元素进行异或,结果应该与数组的第四个元素进行异或,依此类推..
数组是["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)