如何使用n个字节创建byte[] digits;
?
我知道我可以做Enumerable.Range(1, n).ToArray();
但这会创建一个int []。有没有办法创建一个byte []?
我的首要任务是快速表现。记住这一点,是否有更快的方法(代码稍多)可以创建这个?
答案 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];