字节(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这样复杂的二进制格式尤其重要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值