Audio Can';不理解flac帧头格式

Audio Can';不理解flac帧头格式,audio,frame,decode,flac,Audio,Frame,Decode,Flac,我正在做一种flac解析器,我需要解析每个帧的头。有一个字段以flac格式描述() if(可变块大小):“UTF-8”编码样本号 (解码数为36位)[4]否则:“UTF-8”编码帧 数字(解码数字为31位)[4] [4]说: 用于样本/帧编号的“UTF-8”编码相同 用于存储压缩UCS-2的可变长度代码,扩展到 处理较大的输入 我完全不明白如果这个字段是8-56或8-48位,我怎么知道它的大小。为什么解码后的数字是36或31位?另外,当我在十六进制编辑器中以UTF-8编码打开flac文件时,该字

我正在做一种flac解析器,我需要解析每个帧的头。有一个字段以flac格式描述()

if(可变块大小):“UTF-8”编码样本号 (解码数为36位)[4]否则:“UTF-8”编码帧 数字(解码数字为31位)[4]

[4]说:

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


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

UTF-8编码示例意味着第一个字节(帧头的5个字节)包含有效位,它将告诉您以下有多少字节是帧/示例编号的一部分

您可以在此处检查有效位的格式:

如果数字编码为48位,则如下所示: 111111 0x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

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