title: BlockCopy alternative that allows me to choose endianness
body: <p>Say I have an array of bytes:</p>
  
  <pre><code>byte[] input = { 0xFF, 0xFc, 0x00, 0x00 }
  </code></pre>
  
  <p>You can use <code>Buffer.BlockCopy</code> to copy bytes from one array to another, regardless of type.  So, I can do this:</p>
  
  <pre><code>uint[] output = new uint[1];
  Buffer.BlockCopy(input , 0, output, 0, input.Length);
  </code></pre>
  
  <p>This will copy the bytes from input to output, converting them from an array of bytes to an array of uints along the way.</p>
  
  <p>The problem is that <code>BlockCopy</code> interprets the bytes with little endianness.  I need a copy that uses big endianness.  So rather than getting a uint value of 4294705152 (0xFFFC0000), like I need, I get the value 64767 (0x0000FCFF).  Note that this is a bare-bones example, I cannot easily reverse the order of the bytes in my actual application.</p>
  
  <p>Is there anything with the convenience and speed of <code>BlockCopy</code> that includes the ability to set the endianness I need?</p>