我正在实现一个通用的 BACnet 解码器并遇到了以下问题,我似乎无法在 BACnet 标准中找到答案。“20.2.1.3.2 Constructed Data”一章没有回答我的问题,或者我可能没有完全理解它。
假设我有一个 List (SEQUENCE OF),其中包含 Record (SEQUENCE) 类型的元素。所述记录有4个字段,由上下文标签标识,其中字段0和1是可选的。我进一步假设这些字段被序列化的顺序可以是任意的(因为它们是由它们的上下文标签标识的)。数据可能如下所示(数字表示字段/列): [{ "3", "0", 2" }, {"1", "2", "3"}]
通过网络,我假设我得到的唯一“结构信息”是列表的打开/关闭标签。这意味着:
Open Tag List
ctxTagColumn3, valueColumn3,
ctxTagColumn0, valueColumn0,
ctxTagColumn2, valueColumn2,
ctxTagColumn1, valueColumn1,
ctxTagColumn2, valueColumn2,
ctxTagColumn3, valueColumn3
Close Tag List
在读取第一个列表项的最后一列数据(“2”)后,我怎么知道我必须开始解码第二项,从列“1”的值开始?
我的哪个假设是错误的?
谢谢你和亲切的问候
帕斯卡