Я читаю необработанный аудиофайл (копирование дорожки с компакт-диска), выполняю обмен байтами, а затем записываю обратно в файл wav.
Подпрограмма, которую я имею, обрабатывает байты должным образом, но делает только половину файла. Я разработчик VB.NET, а не разработчик C #, и этот код не конвертируется в VB.NET должным образом (он получает ошибку переполнения).
Это не столько "своп", сколько кальций / чернослив.
(короткий) ((буфер [i + 1] * 256) + буфер [i])
Я считаю, что он пишет только половину сэмплов, но я не знаю, как это исправить!
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();
}