我正在写一个小程序来读取.wav文件。根据我一直在关注的wav规范:
看起来后四个字节是一个4字节的小端数。我认为这意味着最低有效字节是第一个,字节数为5,所以换句话说,我从左到右读取它们。从我一直在阅读的内容来看,我认为我应该将它们相乘:
n=bytearray[5]+(bytearray[6]*256)+(bytearray[7]*256)+(bytearray[8]*16777216)
中的字节
但是对于一个只有90k长的文件来说,这是一个非常大的数字,1,459,618,138(十进制)。所以我想我在某处犯了一个错误。
对于其他数字,如果我理解little endian和big endian之间的差异是从右到左与从左到右的字节顺序?
答案 0 :(得分:2)
数组的索引是0,所以你想要的字节是4,5,6和7:
n=bytearray[4]+(bytearray[5]*256)+(bytearray[6]*65536)+(bytearray[7]*16777216)
(请注意,您的第三个乘数必须是65536
,而不是256
。)