HIWORD und LOWORD eines uint in short wandeln

uint uiCoordinates = 786456;

// unsigned int (4 Bytes) in byte-Array zerlegen
byte[] byaInt = BitConverter.GetBytes(uiCoordinates);

// obere 2 Bytes (HIWORD) auslesen: x = 24
short _iX = BitConverter.ToInt16(byaInt, 0);
// untere 2 Bytes (LOWORD) auslesen: y = 12
short _iY = BitConverter.ToInt16(byaInt, 2);