C# 如何创建具有n个字节数的数组?
如何创建C# 如何创建具有n个字节数的数组?,c#,arrays,byte,enumerable,C#,Arrays,Byte,Enumerable,如何创建字节[]位有n个字节 我知道我可以做Enumerable.Range(1,n).ToArray()但这会创建一个int[]。有没有办法创建一个字节[] 我的首要任务是快速表演。记住这一点,有没有一种更快的方法(代码稍微多一点)可以创建这个呢?仅仅创建一个字节数组实例有什么不对 byte[] digits = new byte[n]; 如果你想用1到n的值初始化,我想: for(int i = 1; i <= n; i++) digits[i-1] = (byte)i; //
字节[]位代码>有n个字节
我知道我可以做Enumerable.Range(1,n).ToArray()代码>但这会创建一个int[]。有没有办法创建一个字节[]
我的首要任务是快速表演。记住这一点,有没有一种更快的方法(代码稍微多一点)可以创建这个呢?仅仅创建一个字节数组实例有什么不对
byte[] digits = new byte[n];
如果你想用1到n的值初始化,我想:
for(int i = 1; i <= n; i++)
digits[i-1] = (byte)i; // index is 0-based
for(inti=1;i仅仅创建字节数组实例有什么不对
byte[] digits = new byte[n];
如果你想用1到n的值初始化,我想:
for(int i = 1; i <= n; i++)
digits[i-1] = (byte)i; // index is 0-based
for(int i=1;i您可以执行以下操作:
byte[] digits=new byte[2024];
您可以这样做:
byte[] digits=new byte[2024];
要创建一个字节数组并用字节1到n填充它,只需创建数组并使用循环:
byte[] digits = new byte[n];
for (int i = 0; i < n; i++)
{
digits[i] = (byte) (i + 1);
}
byte[]位=新字节[n];
对于(int i=0;i
请注意,数字[0]
将是1等等……这就是您想要的吗
但是,如果将这些值存储为字节纯粹是为了性能,那么您可能是在进行微优化。您的性能目标是什么?如果使用int[]
相反,这是否遗漏了它们?此数据的自然类型是什么?您使用它的目的是什么?要创建字节数组并用字节1到n填充它,您只需创建数组并使用循环:
byte[] digits = new byte[n];
for (int i = 0; i < n; i++)
{
digits[i] = (byte) (i + 1);
}
byte[]位=新字节[n];
对于(int i=0;i
请注意,数字[0]
将是1等等……这就是您想要的吗
但是,如果将这些值存储为字节纯粹是为了性能,那么您可能是在进行微优化。您的性能目标是什么?如果您使用int[]
,是否会遗漏它们?此数据的自然类型是什么?您使用它的目的是什么?如果您确实喜欢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;
byte[]位=新字节[n];
对于(字节b=1;b如果你真的喜欢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;
byte[]位=新字节[n];
对于(字节b=1;b好吧,看起来我是当今世界上最愚蠢的人。谢谢你,先生。没有必要感到愚蠢。有时候最明显的事情我们都逃避了!好吧,我甚至更愚蠢。我的意思是,我如何用数字填充数组。范围从1->n?@user1933169,所以你不是有意将数组元素初始化为1,2,3,4,…
?它不会在i==n
上失败,因为赋值是给数字[i-1]
。不过看起来确实有点吓人。我的首选是数字[i]=(字节)i+1;
和通常的i
在for
循环测试中,但可能那只是我。好吧,看起来我是当今世界上最愚蠢的人。谢谢你,先生,没有必要感到愚蠢。有时最明显的事情我们逃避了!好吧,我甚至比那更愚蠢。我的意思是,我如何用数字填充数组。from 1->n?@user1933169所以你不是有意将数组元素初始化为1,2,3,4,
?它不会在i==n
上失败,因为赋值是数字[i-1]
。不过看起来确实有点可怕。我的首选是数字[i]=(字节)i+1;
并在for
循环测试中使用通常的i
,但可能只有我一个人。为什么您认为字节[]在32位机器上比int[]性能更好?我不相信,字节只够存储我想存储的数字:)我认为它不会影响性能。@jonsket No,Enumerable.Range(1,n)
产生n
元素。@JeppeStigNielsen:Doh,Doh,Doh。我很愚蠢。删除注释。@user1933169:完全有可能使用字节
数组实际上会比使用int
数组慢,这取决于你对它的操作。听起来你在进行大量的微优化-你有证据证明吗这部分代码实际上是一个瓶颈?为什么您认为字节[]在32位机器上比int[]性能更好?我不相信,字节只够存储我要存储的数字:)我认为它不会影响性能。@JonSkeet No,Enumerable.Range(1,n)
产生n
元素。@JeppeStigNielsen:Doh,Doh,Doh。我很愚蠢。删除注释。@user1933169:完全有可能使用字节
数组实际上会比使用int
数组慢,这取决于你对它的操作。听起来你在进行大量的微优化-你有证据证明吗这部分代码实际上是一个瓶颈?必须同意w/@Jon关于微优化的可能性。除非出于某种原因它们必须是8位值(技术上是字符位值),你可能想看看intfast\u t
之类的东西。至于性能,请注意uint\u fast8\u t
的一个典型定义是typedef unsigned int
@frasnian:我想你可能错过了这里的C上下文…在这种情况下没有intfast\t等。啊,谢谢。我完全错过了。这就是为什么周六的rly会让你:)必须同意w/@Jon关于微优化的可能性。除非出于某种原因它们必须是8位值(好的,技术上是字符位值),你可能想看看intfast\u t
之类的东西。至于性能,请注意uint\u fast8\u t
的一个典型定义是typedef unsigned int
@frasnian:我想你可能错过了这里的C上下文…在这种情况下没有intfast\t等。啊,谢谢。我完全错过了。这就是为什么周六的狂欢会让你:)