Mp3文件的PCM数据存储是否依赖Big Endian和Little Endian?

Does the storage of PCM data of Mp3 File depends on Big Endian and little Endian?

我是 PCM 的初学者,我正在使用 Naudio 库。所以我想知道 PCM 数据的存储是否取决于 Little Endian 和 Big Endian,或者如果存储不依赖于那么内存寻址是否取决于这个 Big Endian 和 Little Endian,因为 PCM 数据得到最低有效字节,当然还有最高有效字节据我所知,Little Endian 和 Big Endian 以不同的方式将这些字节存储到内存中,因此将数据从磁盘读取到内存中可能会产生错误的值,直到我反转数组然后将其转换为 short 值。

为了让你明白我在说什么,这里有一个简短的例子:

一个非常短的 PCM 数据,只有 4 个字节:

Address Value
1000    90
1001    AB
1002    12
1003    CD

这是大端存储。 下面是little Endian

的存储方式
Address Value
1000    CD
1001    12
1002    AB
1003    90

当您使用 Naudio 读取 PCM 时,是否会发生这种字节反转?因为我检查 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); }

总而言之:

问:大小端对字节存储有影响吗?

问:需要用if(BitConverter.IsLittleEndian)语句来反转数组吗?

在 WAV 文件中,PCM 样本存储为小端。

MP3文件是一种压缩的音频格式,所以说它使用什么字节序并没有多大意义,但是当NAudio转换为PCM时,它又会是小字节序。

AIFF 文件通常将样本存储为 big-endian,但同样,NAudio 会为您处理。

在没有看到更多代码的情况下很难说,但我怀疑如果您正常使用 NAudio,您是否需要自己进行任何字节顺序交换。