Я работаю над PCM как новичком, и я использую библиотеку Naudio. Поэтому мне было интересно, что хранение данных PCM зависит от Little Endian и Big Endian, или если не зависит от хранения, тогда адресация памяти зависит от этого большого и маленького Endian, потому что данные PCM получили наименее значительный байт и, конечно же, самый значительный байт и поскольку я знаю, что Little Endian и Big Endian получили другой способ хранения этих байтов в памяти, поэтому чтение данных с диска в память может привести к неправильным значениям, пока я не отформатирую массив, а затем преобразую его в значение short
.Сохраняет ли данные PCM файла Mp3 в зависимости от Big Endian и little Endian?
Просто, чтобы вы поняли, что я имею в виду, вот краткий пример:
A данные очень короткий PCM, из всего 4 байта:
Address Value
1000 90
1001 AB
1002 12
1003 CD
Это хранение в ин большой эндиан. и нижеследующее является хранение в небольшой Endian
Address Value
1000 CD
1001 12
1002 AB
1003 90
так ли это реверсирование байтов происходит, когда вы читаете PCM с помощью NAudio? потому что я проверяю, если BitConverter является Little Endian или нет, согласно тому, что я реверс мой массив байтов, вроде этого:
Int16 Left_Sample = BitConverter.ToInt16(Buffer, i);
Int16 Right_Sample = BitConverter.ToInt16(Buffer, i + 2);
Int16 Final_Sample = (Int16)(0.5f * ((float)Left_Sample + (float)Right_Sample));
byte[] Final_Byte = BitConverter.GetBytes(Final_Sample);
if (BitConverter.IsLittleEndian){ Array.Reverse(Final_Byte); }
Так что в итоге:
Q: Большой и Little Endian влияет на хранение байтов?
В: Нужно ли использовать инструкцию if(BitConverter.IsLittleEndian)
для изменения массива?