无法理解 flac 帧头格式

Voi*_*081 6 audio decode frame flac

我正在做一种 flac 解析器,我需要解析每个帧的标头。有一个字段以 flac 格式描述(https://xiph.org/flac/format.html#frame_header

if(variable blocksize) <8-56>:"UTF-8" 编码样本数 (解码数为 36 位) [4] else <8-48>:"UTF-8" 编码帧数 (解码数为 31 位) )[4]

[4] 说:

用于样本/帧编号的“UTF-8”编码与用于存储压缩的 UCS-2 的可变长度代码相同,经过扩展以处理更大的输入。

我完全不明白如果这个字段是 8-56 或 8-48 位,我该如何知道它的大小。那么为什么解码后的数字是36或31位呢?另外,当我在十六进制编辑器中使用 UTF-8 编码打开 flac 文件时,该字段中没有数字。我将非常感谢任何帮助。

Mij*_*ijo 7

UTF-8 编码样本意味着第一个字节(帧头的 5 个字节)包含重要位,这些位将告诉您有多少后续字节是帧/样本编号的一部分。

您可以在此处检查有效位的格式: https: //en.wikipedia.org/wiki/UTF-8

如果数字用 48 位编码,则如下所示: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

它有 31 位 ('x'),您可以提取它并将其放入更易于管理的类型,例如 UInt32。