# Programming-Idioms

This language bar is your friend. Select your favorite languages!

# Idiom #238 Xor byte arrays

Write in a new byte array c the xor result of byte arrays a and b.

a and b have the same size.

``using System.Linq;``
``var c = a.Zip(b, (l, r) => (byte)(l ^ r)).ToArray();``
``use iso_fortran_env, only : int8``
``````integer(kind=int8), dimension(:) :: a, b, c
! Assign values to a and b
c = ieor(a,b)``````
``````c := make([]byte, len(a))
for i := range a {
c[i] = a[i] ^ b[i]
}``````
``````var c T
for i := range a {
c[i] = a[i] ^ b[i]
}``````
``const c = Uint8Array.from(a, (v, i) => v ^ b[i])``
``````byte[] c = new byte[a.length];
for (int i = 0; i < a.length; i++) {
c[i] = (byte) (a[i] ^ b[i]);
}``````
``(map '(vector (unsigned-byte 8)) #'logxor a b)``
``````local c = {}
for i=1,#a do
c[i] = string.char(string.byte(a, i) ~ string.byte(b, i))
end
c = table.concat(c)
``````
``````SetLength(c, Length(a));
for i := Low(a) to High(a) do c[i] := a[i] xor b[i];``````
``use feature 'bitwise';``
``\$c = \$a ^. \$b;``
``c = bytes([aa ^ bb for aa, bb in zip(a, b)])``
``c = a.zip(b).map{|aa, bb| aa ^ bb}``
``let c: Vec<_> = a.iter().zip(b).map(|(x, y)| x ^ y).collect();``

programming-idioms.org