字节(byte)与位(bits)

基本概念
Bit(位): 是计算机数据的最小单位。它只有两种取值,0或1。
Byte(字节): 是计算机存储数据的基本单位。1字节 = 8位。
在数据通信和存储中,数据的大小通常用字节来表示,而在描述数据的详细结构(例如协议头)时,通常使用位。

字节与位的关系
1 字节 = 8 位 (1 Byte = 8 Bits)

示例解释
假设我们有一个ADTS帧头,它由7字节(7 Bytes)组成,且这7字节总共包含56位(7 * 8 = 56 Bits)。

具体到ADTS头部的位与字节的关系
固定头 (adts_fixed_header) 详细解析
在前面的内容中,我们提到了固定头包含了28位(28 Bits)的数据。以下是这些位的具体分配及其对应的字节:

syncword (12 bits): 这12位用来标识ADTS帧的开始。

前8位(第1个字节): 1111 1111 (0xFF)
后4位(第2个字节的前4位): 1111
ID (1 bit): MPEG版本标识。

位于第2个字节的第5位。
layer (2 bits): 总是设置为00。

位于第2个字节的第6和第7位。
protection_absent (1 bit): 标识是否有CRC校验。

位于第2个字节的第8位。
profile (2 bits): 标识AAC的级别。

位于第3个字节的前2位。
sampling_frequency_index (4 bits): 采样率索引。

位于第3个字节的第3到第6位。
private_bit (1 bit): 私有位。

位于第3个字节的第7位。
channel_configuration (3 bits): 声道配置。

位于第3个字节的第8位和第4个字节的前2位。
original_copy (1 bit): 标识原始音频或副本。

位于第4个字节的第3位。
home (1 bit): 标识音频是否在家使用。

位于第4个字节的第4位。
可变头 (adts_variable_header) 详细解析
可变头也包含了28位(28 Bits)的数据。以下是这些位的具体分配及其对应的字节:

copyright_identification_bit (1 bit): 版权标识位。

位于第4个字节的第5位。
copyright_identification_start (1 bit): 版权标识开始。

位于第4个字节的第6位。
aac_frame_length (13 bits): ADTS帧长度。

位于第4个字节的第7、8位和第5个、第6个字节。
adts_buffer_fullness (11 bits): ADTS缓冲区满度。

位于第6个字节和第7个字节。
number_of_raw_data_blocks_in_frame (2 bits): 每帧中包含的AAC原始数据块的数量。

位于第7个字节的后2位。
总结
通过这种位和字节的映射关系,可以确保ADTS头部的各项信息能够被准确地解析。理解位与字节之间的关系是分析和处理二进制数据结构的基础,对于处理诸如ADTS这样复杂的二进制格式尤其重要。

posted @   小马同学..3  阅读(157)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示