我需要反复将1024个以上的连续4字节浮点数(范围为-1到1)转换为2字节短整数(范围为-32768至32767),并写入磁盘。
目前我使用循环来完成此操作:
short v = 0;
for (unsigned int sample = 0; sample < length; sample++)
{
v = (short)(inbuffer[sample * 2] * 32767.0f);
fwrite(&v, 2, 1, file);
}
这个方法能够工作,但是浮点数的计算和循环操作比较耗费性能。是否有优化的方法?