将 Int[] 数组向下转换为 Byte[] 数组

Down casting an array of Int[] into an array of Byte[]

有没有一种简单的方法可以将整数数组向下转换为字节数组?
本质上,我想做以下事情(不能按原样工作):

int[] myIntArray = new int[20];
byte[] byteArray = (byte[])myInArray;

这样做的原因是,在我的应用程序中,myIntArray 实际上是一个 byte[],但被声明为一个 int[]。这意味着只对 myIntArray 中的最低有效字节感兴趣。

尝试使用 Linq Select

byte[] byteArray = myIntArray.Select(i=> (byte)i).ToArray();

您可能认为这可行:

byte[] myByteArray = myIntArray.Cast<byte>().ToArray();

但它没有 - 见 Why Enumerable.Cast raises an InvalidCastException?

您可以使用 Select 投影到新阵列。

byte[] myByteArray = myIntArray.Select(i => (byte)i).ToArray();

现场演示:https://rextester.com/KVR50332