hi我有这种阵列
int[] arrayint = new int[32];
它包含
arrayint[0] = 99
arrayint[1] = 121
arrayint[2] = 99
arrayint[3] = 66
...
有没有一种简单的方法可以将整数数组复制到字节数组中,就像我想让这个字节数组成为一样
byte[] streambit;
并且应该与数组值相同
我想像这样输出
streambit[0] = 99
streambit[1] = 121
streambit[2] = 99
streambit[3] = 66
...
streambit = arrayint.Select(i => (byte)i).ToArray();
只需确保您的值不大于255。
没有LINQ(例如,在瞄准.Net 2.0时很有用):
byte[] bytearray = Array.ConvertAll<int, byte>(arrayint, (z) => (byte)z);
是的,比LINQ:快得多
测试代码(可以改进,但这给出了一个想法):
private static void Main(string[] args)
{
int[] arrayint = new int[40000];
arrayint[0] = 99;
arrayint[1] = 157;
arrayint[2] = 1;
arrayint[3] = 45;
byte[] bytearray;
Stopwatch sw = Stopwatch.StartNew();
for (int i = 0; i < 10000; i++)
{
bytearray = Array.ConvertAll<int, byte>(arrayint, (z) => (byte)z);
}
sw.Stop();
Console.WriteLine("ConvertAll took {0} ms", sw.ElapsedMilliseconds);
sw = Stopwatch.StartNew();
for (int i = 0; i < 10000; i++)
{
bytearray = arrayint.Select(z => (byte)z).ToArray();
}
sw.Stop();
Console.WriteLine("LINQ took {0} ms", sw.ElapsedMilliseconds);
Console.ReadLine();
}
结果:
ConvertAll花费1865毫秒
LINQ的耗时6073毫秒
streambit=arrayint.Where(x=>x>=0&&x<=255).Select(y=>(byte)y).ToArray();