바이트 스왑을 수행 한 후 원시 오디오 파일 (CD 트랙 립)을 읽은 다음 wav 파일에 다시 쓰고 있습니다.파일의 바이트 교환
루틴은 올바르게 바이트를 처리하지만 파일의 절반 만 처리합니다. 나는 VB.NET 개발자이고, C# 개발자는 아니며,이 코드는 VB.NET으로 제대로 변환되지 않는다. (오버 플로우 오류가 발생한다.)
정말 calc/prune만큼 "스왑"이 아닙니다. (짧은) ((버퍼 [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();
}
감사합니다 위의 소스이지만 여전히 오디오의 절반 만 처리합니다. –