rtmp中数字的转换

在RTMP协议中,数字如afm=0x00以大端模式表示,例如双精度浮点数0x4008000000000000。其内存模型包含符号位、指数和尾数。转换为int类型涉及指数和尾数的计算,例如上述数值转换过程得出结果为2。
摘要由CSDN通过智能技术生成

在rtmp中,afm=0x00,表示的是数字,这个数字是用大端表示的,就是最重要的数放在了最低位上。wireshark截图如下


00    表示数字

4008000000000000  double类型的值,8个字节

05 表示空符号null

怎么翻译这个数为int类型呢?

double的内存模型为

IEEE 754 Double Floating Point Format.svg

最高位是0,表示正数。

然后是11位的指数

最后是52位的尾数。

计算方法为:

(-1)^{\text{sign}}\left(1+\sum _{i=1}^{52}b_{52-i}2^{-i}\right)\times 2^{e-1023}

把上面的数转换为二进制位

0100 0000 0000 1000 0000000000.。。。

带入公式为 (1+1*2^-1)*2^(1024-1023)=2

基本就是这样的了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值