读取.wav文件:将小端和大端转换为整数

发布于 2024-11-29 09:09:25 字数 520 浏览 2 评论 0原文

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

graphic of .wav file format

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

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

如此字节输入

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

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

I'm writing a little program to read a .wav file. According to the wav specs I've been looking at:

graphic of .wav file format

it looks like the second four bytes are a 4 byte little endian number. I think this means that the least significant byte is the first one, byte number 5, so in otherwords, I read them from left to right. From what I've been reading, I think I should multiply them like this:

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

so byte in

but that comes out to a pretty damn large number, 1,459,618,138 in decimal for a file that is only 90k long. So I think I'm making a mistake here somewhere.

for the other numbers, if I understand the difference between little endian and big endian is right to left vs left to right order of the bytes?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

轻许诺言 2024-12-06 09:09:25

该数组从 0 开始索引,因此您需要的字节是 4、5、6 和 7:(

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

请注意,您的第三个乘数需要是 65536,而不是 256。)

The array is indexed from 0, so the bytes you want are 4, 5, 6 and 7:

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

(Note that your third multiplier needs to be 65536, not 256.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文