Dms-cc中ddb的section length与message length的处理

原创 2007年09月29日 16:30:00

以一个初始地址为0x7f20,长度0x205ddb section为例:

0x7f20

Section header,长度为8,其中section length字段结束后还有5

0x7f28

c message headermessage length字段在其末尾,以为adaptation length = 0

0x7f34

6ddb header

0x7f3a

Ddb data,长度0x1e7

0x8121

4crc字段

0x8125

 

这个sectionsection length 0x202message length 0x1ed

由上面的地址可知:

0x7f20 + 0x3 + 0x202= 0x8125,也就是section的结束位置。

dsm-cc的文档可知,section length表示的是section开始位置处section length字段结束后到section末尾的长度,这与上面的实际情况一致,以为section length结束位置距section3个字节。

下面来看message length

0x7f28 + 0xc + 0x1ed = 0x8121, 也就是message结束的位置。

dsmcc文档可知,message length表示该字段结束后到message末尾的长度,因为adaptation length = 0,也就是message length后没有adaptation header,所以message头加上0xc就刚好是message length结束的位置。

 

Dsm-cc中,特别要注意这个length是从当前字段结束时算起的,如果我们用直接read 文件头作为struct的方式来解析,需要特殊处理,计算剩余的length,如果是一个字段一个字段读取的,就没有这个问题了。

 

相关文章推荐

CC2640R2F BLE5.0 蓝牙协议栈数据长度扩展功能(LE Data Length Extension)

概要 数据长度扩展功能允许LE控制器在连接状态下发送具有高达251字节的PDU。此外,在连接期间的任何时间,任何一方可以协商新的PDU大小。 此前,控制器的最大数据通道有效载荷为27字节。与蓝牙核...

sftp登录linux Received message too long (or "Bad packet length") 原因,已解决

sftp登录linux Received message too long (or "Bad packet length") 原因,已解决

我对C++ string和length方法的一个长期误解------从protobuf序列化说起(没处理好会引起数据丢失、反序列化失败哦!)

自认为C和C++基础知识还行, 于是以为下面程序的结果都是3, 看看: #include #include using namespace std; int main() { char szT...
  • stpeace
  • stpeace
  • 2016年11月05日 18:54
  • 1789

java.lang.ArrayIndexOutOfBoundsException: length=2; index=2 异常处理

最近在做项目时,需求上需要ListView 有两个不同的布局,由于自己定义getItemViewType 的返回值,出现一个异常,  java.lang.ArrayIndexOutOfBounds...

UFTZDB1.ZMQ_DATA_LENGTH_RULE_CHECK1.sql

  • 2015年09月11日 03:56
  • 5KB
  • 下载

[Java学习笔记] 为什么.length是数组的成员,是字符串的方法?

记得vamcily 曾问我:“为什么获取数组的长度用.length(成员变量的形式),而获取String的长度用.length()(成员方法的形式)?”   我当时一听,觉得问得很有道理。...

Java for循环每次都通过list.size()和 string.length()获取大小是否消耗性能?

有人说list.size()、str.length()会消耗时间计算元素大小,其实事实并非如此
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Dms-cc中ddb的section length与message length的处理
举报原因:
原因补充:

(最多只允许输入30个字)