title: Casting a char to an unsigned short: what happens behind the scenes?
body: <p>Given this field:</p>
  
  <pre><code>char lookup_ext[8192] = {0}; // Gets filled later
  </code></pre>
  
  <p>And this statement:</p>
  
  <pre><code>unsigned short *slt = (unsigned short*) lookup_ext;
  </code></pre>
  
  <p>What happens behind the scenes?</p>
  
  <p>lookup_ext[1669] returns 67 = 0100 0011 (C), lookup_ext[1670] returns 78 = 0100 1110 (N) and lookup_ext[1671] returns 68 = 0100 0100 (D); yet slt[1670] returns 18273 = 0100 0111 0110 0001. </p>
  
  <p>I'm trying to port this to C#, so besides an easy way out of this, I'm also wondering what really happens here. Been a while since I used C++ regularly.</p>
  
  <p>Thanks!</p>