读取.wav文件:将小端和大端转换为整数
我正在编写一个小程序来读取 .wav 文件。根据我一直在查看的 wav 规范:
看起来第二个四个字节是一个 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:
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
该数组从 0 开始索引,因此您需要的字节是 4、5、6 和 7:(
请注意,您的第三个乘数需要是
65536
,而不是256
。)The array is indexed from 0, so the bytes you want are 4, 5, 6 and 7:
(Note that your third multiplier needs to be
65536
, not256
.)