2

这是我的代码:

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

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

                    next:

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

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

如您所见,它一次写入 2 个字节。如何使用 ulong 类型一次写入 8 个字节?pcmU16 是 ushort[] 数组。

4

1 回答 1

2

你只是强迫它:

ulong* src = (ulong*)srcFix;

不过要注意的事项:

  • max需要除以 4,否则您将超出范围
  • 您需要处理任何杂散值 - 例如,假设您有 10 个ushort值(max最初是 10 个);即 2 组ulong(每组 4 组),最后 2组ushort;通常的除数/余数

最后一点,您可能会发现索引语法更方便,即

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