【问题标题】:reading .wav file: converting little endian and big endian to integer读取 .wav 文件:将小端和大端转换为整数
【发布时间】:2011-10-26 17:15:55
【问题描述】:

我正在编写一个小程序来读取 .wav 文件。根据我一直在查看的 wav 规格:

看起来后四个字节是一个 4 字节的小端数。我认为这意味着最低有效字节是第一个,字节数 5,所以换句话说,我从左到右读取它们。根据我一直在阅读的内容,我认为我应该像这样将它们相乘:

n=bytearray[5]+(bytearray[6]*256)+(bytearray[7]*256)+(bytearray[8]*16777216)

所以字节在

但是对于一个只有 90k 长的文件来说,这是一个非常大的数字,十进制为 1,459,618,138。所以我认为我在这里某个地方犯了一个错误。

对于其他数字,如果我理解小端和大端之间的区别是从右到左还是从左到右的字节顺序?

【问题讨论】:

  • 您正在处理错误的 4 个字节 - 它应该是 4..7,而不是 5..8
  • 我也有兴趣!但我需要知道标题是如何更改的...我看到这是 RIFF 到 RIFX,但仅此而已吗?

标签: math hex wav


【解决方案1】:

数组从 0 开始索引,所以你想要的字节是 4、5、6 和 7:

n=bytearray[4]+(bytearray[5]*256)+(bytearray[6]*65536)+(bytearray[7]*16777216)

(请注意,您的第三个乘数必须是 65536,而不是 256。)

【讨论】:

  • 啊,这样更好。谢谢。
猜你喜欢
  • 2015-04-14
  • 2011-04-18
  • 1970-01-01
  • 1970-01-01
  • 2013-10-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多