2017-09-11 24 views
-1

最初の2つの文字列からBitwise XOR値を取得したい場合は、1番目の2つの結果を配列の3番目の要素と排他的論理和演算して結果を4番目の要素と排他的論理和配列のとそう..にSwiftの2桁の16進数文字列のビットごとのXOR 3

アレイも助けてください

ビット単位のXOR値になります["a2", "09", "00", "00", "00", "01", "00", "00", "00", "10", "00"]

最終的な答えです。事前

+0

XORとはどういう意味ですか? – Abizern

答えて

0

あなたは

let numbers = pairs.flatMap{Int($0, radix: 16)}

let xor = numbers.reduce(0, {$0^$1})

あなたの結果を得るために、コードの下に使用することができます

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

0

ありがとうございますIntに16進数文字列番号を変換するInt(String, radix: 16)を使用することができます。 Intのこの初期化子を使用すると、flatMapを使用して、16進文字列を整数に変換できます。

次に、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" 
+0

ありがとうございます。それは働く – Appstute

+0

私は助けることができてうれしい。私の答えが役に立ったら、それを受け入れることを検討してください。 –

関連する問題