In C#, I think most people would just do something like this:
int[] ia = new int[someSize];
// code to initialize ia
byte[] ba = new byte[4 * someSize];
for(int i = 0; i < ia.Length ; i++)
{
int j = 4 * i;
ba[j] = (byte)(ia[i] & 0xFF);
ba[j+1] = (byte)(ia[i] >> 8 & 0xFF);
ba[j+2] = (byte)(ia[i] >>16 & 0xFF);
ba[j+3] = (byte)(ia[i] >> 24 & 0xFF);
}
You can also use the BitConverter.GetBytes(someInt) method to get the byte representation of a single integer though using this class isn't as fast as bit arithmetic.
Although it's possible to simulate unions, you can't overlap reference types within them which, of course, is what arrays are in .NET. You might be able to do something using pointers in 'unsafe' code but I doubt whether it would be much quicker than the above.