首页 > 其他分享 >按位计算TMMBN中的MxTBR

按位计算TMMBN中的MxTBR

时间:2023-01-17 13:36:54浏览次数:35  
标签:TMMBN int unsigned tmb 按位 exp MxTBR 赋值

上周处理RTCP消息中发现项目小伙伴处理TMMBR消息中遇到了问题。主要是小伙伴不晓得对于MxTBR中的Exp、Mantissa以及OverHead怎么赋值。

因为这三个对象的赋值都没有按照完整字节赋值,存在跨字节情况及只取部分BIT位情况。

按位计算TMMBN中的MxTBR_RTCP

我分析了下RFC5104规范,发现该规范对于三个对象的赋值描述的很清楚。Exp占高位6BIT,Mantissa占17BIT,OverHead占9 BIT。

    按位计算TMMBN中的MxTBR_按位_02

按位计算TMMBN中的MxTBR_RTCP_03

原因及算法了解后,进入到非常轻松的编码环节。

struct tmmbndata
{
   unsigned int overhead;
   unsigned int mantissa;
   unsigned char exp;
   unsigned long tmmbn;
};

 struct tmmbndata tmb;
 tmb.overhead=0;
 tmb.mantissa=16000;
 tmb.exp=2;
 tmb.tmmbn = (unsigned int)(tmb.exp << 26) + (unsigned int)(tmb.mantissa << 9) + (tmb.overhead & 511);

 

按位<<,根据规范规定定义好移动的BIT即可。

标签:TMMBN,int,unsigned,tmb,按位,exp,MxTBR,赋值
From: https://blog.51cto.com/u_15942605/6017165

相关文章

  • 【LeetCode周赛-312】子数组按位与最大值、并查集(图)
    周赛链接:​​​https://leetcode.cn/contest/weekly-contest-312/​​A.2418.按身高排序题目描述:给你一个字符串数组names,和一个由互不相同的正整数组成的数组heig......
  • 为什么1按位取反的结果是-2?
    假设计算机存取一个数用8位表示按位取反要考虑符号位(最高位为0则正,反之则为负)5=00000101取反11111010但是符号位发生改变,计算机中数的存储都是用补码进行存储的,正数......
  • java中用整数相除获得小数并按位数输出
      俩个int类型的数据进行运算,结果也是int类型的,0.33333转为int类型为0.0;要求保留两位小数输出:System.out.printf("%.2f",b);//保留两位小数输出......
  • 顺序表-00011-按位置删除元素,remove
    顺序表结构定义typedefintseqType; //定义顺序表数据类型//定义顺序表的结构体typedefstructt_sList{ seqType*pbase; //表基址 intcapacity; //表......
  • 顺序表-00008-按位置插入,insert
    顺序表结构定义typedefintseqType; //定义顺序表数据类型//定义顺序表的结构体typedefstructt_sList{ seqType*pbase; //表基址 intcapacity; //表......
  • kx-000011-按位置删除元素,remove
    顺序表结构体定义。具体的结构体定义请查看头文件:https://www.cnblogs.com/kxwslmsps/p/16937235.htmltypedefstatusint;//定义函数结果状态typedefintetyp......
  • kx-000008-按位置插入元素x,insert
    顺序表结构体定义。具体的结构体定义请查看头文件:https://www.cnblogs.com/kxwslmsps/p/16937235.htmltypedefstatusint;//定义函数结果状态typedefintetyp......
  • P3175 [HAOI2015]按位或
    P3175[HAOI2015]按位或设\(A_i\)表示第\(i\)位变为\(1\)的时间,那么答案就是\(max(A)\)。发现\(max(A)\)不好直接求,但\(min(A)\)很好求,考虑\(min-max\)容斥。那么\(E(ma......
  • 两个数按位异或 按位或 按位与的最大值
    and:就是从最高的一位向下找,如果这一位为1的数多于两个就取出这些数,然后再取出的这些数里面继续下一位的一样的处理,我就用递归写的or:这个比较巧妙,也比较暴力,先每个数开一......
  • BZOJ 4036([HAOI2015]按位或-子集和变换)
    Description刚开始你有一个数字0,每一秒钟你会随机选择一个[0,2^n-1]的数字,与你手上的数字进行或(c++,c的|,pascal的or)操作。选择数字i的概率是p[i]。保证0<=p[i]<=1,Σp[i]=......