2

Here is my code:

              long max = pcmU16.Length;
              long index = 0;

              fixed (ushort* srcFix = pcmU16)
              {
                    ushort* src = srcFix;

                    next:

                    *src = 32768;
                    src++;
                    index++;

                    if (index != max)
                    {
                          goto next;
                    }
              }

Like you see, it is writing 2 bytes at once. How to use ulong type and write 8 bytes at once? pcmU16 is ushort[] array.

4

1 に答える 1

2

あなたはそれを強制するだけです:

ulong* src = (ulong*)srcFix;

ただし、次の点に注意してください。

  • あなたのmaxニーズは4で割る必要があります。そうしないと、範囲外になります
  • 迷子の値を処理する必要があります。たとえば、10 個のushort値があるとします (max最初は 10 個でした)。つまり、2 セットulong(各 4) で、最後の 2ushortです。通常の除数/余りのもの

最後に、インデックス構文の方が便利だと思うかもしれません。

for(int i = 0 ; i < max ; i++) {
    src[i] = ...
}
于 2012-07-20T12:51:11.753 に答える