我所做的是将wave文件转换为short []数组中的幅度值,如Mean amplitude of a .wav in C#
中所示我修改了值,现在想要转换回.wav格式或byte []数组,当可以写入字节文件时。
答案 0 :(得分:1)
void SetShortToBuffer(short val,byte[] outArray,int Offset)
{
outArray[Offset] = (byte)(val & 0x00FF);
Offset++;
outArray[Offset] = (byte)((val >> 8) & 0x00FF);
}
byte[] ConvertShortArray(short[] Data,int Offset,int Count)
{
byte[] helper = new byte[Count * sizeof(short)];
int end = Offset+Count;
int io=0;
for (int i = Offset; i < end; i++)
{
SetShortToBuffer(Data[i], helper, io);
io+=sizeof(short);
}
return helper;
}
在C
中这不是问题,您可以简单地告诉编译器您之前声明的短数组现在应该被视为字节数组(简单转换)但是在{{1}失败之后在} C#
上下文之外我想出了这段代码:)
如果您的wave很大,您可以使用unsafe
函数来获取数据块
编辑:
快速而肮脏的wave header creator,未经过测试
ConvertShortArray