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

sta*_*eUp 0 c# arrays data-conversion

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

int[] myIntArray = new int[20];
byte[] byteArray = (byte[])myInArray;
Run Code Online (Sandbox Code Playgroud)

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

Jam*_*iec 5

您可能认为这会起作用:

byte[] myByteArray = myIntArray.Cast<byte>().ToArray();
Run Code Online (Sandbox Code Playgroud)

但它没有 - 请参阅为什么 Enumerable.Cast 引发 InvalidCastException?

您可以使用Selectwhile 来投影到新数组。

byte[] myByteArray = myIntArray.Select(i => (byte)i).ToArray();
Run Code Online (Sandbox Code Playgroud)

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