我正在读取原始音频文件(CD曲目翻录),进行字节交换,然后写回到wav文件。交换文件中的字节
例程我已正确处理字节,但只能处理大约一半的文件。我是一个VB.NET开发人员,不是真正的C#开发人员,并且此代码不能正确转换为VB.NET(它会发生溢出错误)。
这不是一个真正的“交换”,而是一个计算/修剪。 (短)((缓冲[I + 1] * 256)+缓冲[1])
我相信这是写只有一半的样品,但我不知道如何解决!
public static short[] SwapBytesArray(string fileName)
{
byte[] buffer = System.IO.File.ReadAllBytes(fileName);
long fileLength = buffer.LongLength;
if ((fileLength & 1) == 1)
{
throw new ArgumentException("File length must be an even number of bytes");
}
System.Collections.Generic.List<short> sList = new System.Collections.Generic.List<short>();
for (long i = 0; i < fileLength - 1; i += 2)
{
byte tmp = buffer[i];
sList.Add((short)((buffer[i + 1] * 256) + buffer[i]));
//buffer[i + 1] = tmp;
}
return sList.ToArray();
}
多亏了这个奇妙的一群人的答案我已经升级上面的来源,但它仍然只处理一半的音频。 – 2009-05-31 05:30:03