这是我的代码:
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[] 数组。
最佳答案
你只是强制它:
ulong* src = (ulong*)srcFix;
但值得注意的是:
- 您的
最大值
需要除以4,否则就会超出范围 - 您需要处理任何杂散值 - 例如,假设您有 10 个
ushort
值(max
最初为 10);即 2 组ulong
(每组 4 组),最后 2 组ushort
;通常的除数/余数的东西
最后一点,您可能会发现索引语法更方便,即
for(int i = 0 ; i < max ; i++) {
src[i] = ...
}
关于c# - 在不安全模式下使用 64 位指针访问 16 位数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11579192/