0

バイト配列の n 番目ごとの short を取得し、それを新しい配列にコピーするスムーズで高速な方法を探しています。

l = 下位バイト u = 上位バイト

私のデータは次の形式です: byte[] bytes= {a0l, a0u, b0l, b0u, c0l, ..., n0l, n0l, a1l, a1u, b1l, ..., nXl, nXu}

必要なのは、長さ X の n バイト配列を取得することです (たとえば、a[0..X]、b[0..X]、... または M[a..n][0..X])。

次の2つのステップを考えていました。

  1. 次のようなものを使用して、値を short (=> short[] shorts= { a0, b0, c0, ... n0, a1, .. nX}) に変換します

        short[] shorts= new short[(int)(Math.Ceiling(bytes.Length / 2.0)];
        Buffer.BlockCopy(bytes, 0, shorts, 0, bytes.Length);
    
  2. short から毎秒値を取得する

       I'm looking for some fast code here... something like blockcopy with skip
       I am completely aware that I could use a loop - but maybe there's a better
       solution to it as I need to do this task for 80MB/s...
    
  3. それをバイト配列に変換します(同じ - ブロックコピーを使用)

        byte[] arrayX = new byte[shorts.Length * 2];
        Buffer.BlockCopy(shorts, 0, arrayX , 0, arrayX .Length);
    

どうもありがとう!

4

1 に答える 1

0

各ショートの正しいオフセットを計算して、バイトを新しいバイト配列に直接コピーするだけでもよいと思います。

すべてを個別の短い配列に変換してからバイト配列に戻すのは、IMO の時間の無駄です。

于 2012-04-27T09:59:46.713 に答える