最初の2つの文字列からBitwise XOR値を取得したい場合は、1番目の2つの結果を配列の3番目の要素と排他的論理和演算して結果を4番目の要素と排他的論理和配列のとそう..にSwiftの2桁の16進数文字列のビットごとのXOR 3
アレイも助けてください
ビット単位のXOR値になります["a2", "09", "00", "00", "00", "01", "00", "00", "00", "10", "00"]
最終的な答えです。事前
最初の2つの文字列からBitwise XOR値を取得したい場合は、1番目の2つの結果を配列の3番目の要素と排他的論理和演算して結果を4番目の要素と排他的論理和配列のとそう..にSwiftの2桁の16進数文字列のビットごとのXOR 3
アレイも助けてください
ビット単位のXOR値になります["a2", "09", "00", "00", "00", "01", "00", "00", "00", "10", "00"]
最終的な答えです。事前
あなたは
let numbers = pairs.flatMap{Int($0, radix: 16)}
let xor = numbers.reduce(0, {$0^$1})
let result = String(format: "%02x", xor)
で
ありがとうございます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"
ありがとうございます。それは働く – Appstute
私は助けることができてうれしい。私の答えが役に立ったら、それを受け入れることを検討してください。 –
XORとはどういう意味ですか? – Abizern