我试图在 Google Chrome 中使用 JavaScript 从一组字节中生成一个数字,从ArrayBuffer中获取 MP3 标记信息。ID3v2 规范规定,要获取标签大小,您必须在某个位置占用 4 个字节并从中获取整数值,除了:
ID3v2 标签大小用四个字节编码,其中最高有效位(第 7 位)在每个字节中设置为零,总共 28 位。零位被忽略,因此 257 字节长的标签表示为 $00 00 02 01。
天真的方法似乎是遍历每个字节并获取每个位的值并产生一个新的 4 字节值,由原始 4 个字节的 7 个位产生,例如我们有这 4 个原始字节:
0111 1111 0111 1111 0111 1111 0111 1111
我创建了一个新的 ArrayBuffer 并遍历每个位以产生:
0000 1111 1111 1111 1111 1111 1111 1111
然后我使用Uint32Array从这个 32 位整数计算整数值
有没有更简单的方法来做到这一点?