gpt4 book ai didi

javascript - 当忽略每个字节的前导位时,是否有一种简单的方法可以从一组字节中生成一个数字?

转载 作者:行者123 更新时间:2023-11-28 21:26:13 24 4
gpt4 key购买 nike

我正在尝试使用 Google Chrome 中的 JavaScript 从ArrayBuffer 的一组字节中生成一个数字。获取 MP3 标签信息。 ID3v2 规范 states要获取标签大小,您必须在某个位置获取 4 个字节并从中获取整数值,除了:

The ID3v2 tag size is encoded with four bytes where the most significant bit (bit 7) is set to zero in every byte, making a total of 28 bits. The zeroed bits are ignored, so a 257 bytes long tag is represented as $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 位整数的整数值

有更简单的方法吗?

最佳答案

仔细想想,您得到的是一个 4 位 128 基数。每个字节保存一个“数字”,每个“数字”都是 0 到 127(含)之间的值。因此,要将它们变成可用的数字,您只需像对待任何其他基数一样进行乘法和加法:最低有效的“数字”是“个位”数字,下一个是“128”,接下来是“16384s”,最高有效位是“2097152s”位。

我不确定如何在代码中显示这一点,因为我不太熟悉新的“ArrayBuffer”API;你使用“ArrayBufferView”或其他东西来访问这些值,对吗?假设很容易获得各个字节,那么执行乘法和加法应该是一个非常简单的函数。

关于javascript - 当忽略每个字节的前导位时,是否有一种简单的方法可以从一组字节中生成一个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4979064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com