Marshall copy is great but hard to use for unsigned variables like Uint16, UInt32, Uint64 as there are no overloads that support the copy functionality for unsigned variables. There is no workaround as you can't cast a UInt16[] to an Int16[]. The Copy function should not care as long you are copying unsigned to unsigned and the element lengths are equal.