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.