如何用n个字节创建数组?

时间:2013-03-15 19:41:45

标签: c# arrays byte enumerable

如何使用n个字节创建byte[] digits;

我知道我可以做Enumerable.Range(1, n).ToArray();但这会创建一个int []。有没有办法创建一个byte []?

我的首要任务是快速表现。记住这一点,是否有更快的方法(代码稍多)可以创建这个?

4 个答案:

答案 0 :(得分:6)

创建字节数组实例有什么问题?

byte[] digits = new byte[n];

如果你想用1到n的值初始化,那么我想:

for(int i = 1; i <= n; i++)
   digits[i-1] = (byte)i; // index is 0-based

也会尽快为您提供所需的结果。当然,其中n < 256!

答案 1 :(得分:6)

如果你真的喜欢LINQ,你可以做到

byte[] digits = Enumerable.Range(1, n).Select(i => (byte)i).ToArray();

还有可能

byte[] digits = new byte[n];
for (byte b = 1; b <= n; ++b)
    digits[b - 1] = b;

答案 2 :(得分:1)

要创建一个字节数组并用字节1到n填充它,你只需要创建数组并使用循环:

byte[] digits = new byte[n];
for (int i = 0; i < n; i++)
{
    digits[i] = (byte) (i + 1);
}

请注意,然后digits[0]将为1等...是您想要的吗?

但是,如果将这些值存储为字节的原因纯粹是性能,那么可能是微优化。你的表现目标是什么?如果您使用int[],那会错过吗?这些数据的自然类型是什么?你用它做什么用?

答案 3 :(得分:0)

你可以这样做:

byte[] digits=new byte[2024];