1

byte[] digits;nバイト数で作成するには?

できることはわかっていますEnumerable.Range(1, n).ToArray();が、これにより int[] が作成されます。byte[] を作成する方法はありますか?

私の優先事項は速いパフォーマンスです。これを念頭に置いて、これを作成できるより高速な方法 (コードを少し増やす) はありますか?

4

4 に答える 4

9

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;
于 2013-03-15T19:50:40.553 に答える
7

バイト配列インスタンスを作成するだけでは何が問題なのですか?

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!

于 2013-03-15T19:42:23.397 に答える
1

バイト配列を作成して1〜nバイトで埋めるには、配列を作成してループを使用します。

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

その場合は1などになることに注意してくださいdigits[0]...それはあなたが望んでいたことですか?

ただし、これらの値をバイトとして格納する理由が純粋にパフォーマンスである場合は、おそらくマイクロ最適化しています。あなたのパフォーマンスの目標は何ですか?代わりに使用する場合int[]、それはそれらを見逃しますか?このデータの自然なタイプは何ですか?何に使ってるの?

于 2013-03-15T19:50:02.930 に答える
0

次のようなことができます:

byte[] digits=new byte[2024];
于 2013-03-15T19:43:10.667 に答える