基于TLV编码对数据结构进行编码

时间:2013-02-14 05:30:08

标签: c++ encoding tlv

我必须根据X.690编码对数据结构中存在的参数进行编码。 假设,我的结构是:

struct Data_Struct
{
   parameter1
   parameter2
   parameter3
}

这些参数中的部分或全部可能包含有效数据,例如parameter1parameter3。 然后我应该使用TLV编码仅编码parameter1parameter3。 我是否必须按照顺序程序进行操作。喜欢,

Check whether parameter 1 is present
    If present, find the tag of the parameter from a lookup table and encode it
Check whether parameter 2 is present
    If present, find the tag of the parameter from a lookup table and encode it
Check whether parameter 3 is present
    If present, find the tag of the parameter from a lookup table and encode it
  • 由于程序是重复的,我可以模块化吗?
  • 最好的方法是什么?
  • 有没有办法顺序访问参数?
  • 如何在参数及其标记之间建立关系?

值的长度是可变的。

1 个答案:

答案 0 :(得分:0)

您需要创建一个包含成员和标记对的表,例如{&Data_Struct::parameter1, TagForParam1}。这是不可避免的,因为编译器无法猜测该标记。

您还需要定义您认为“空”或“有效数据”的内容。这可能取决于类型。例如。 +INF是有效浮点值吗?因此,添加重载函数bool IsValid(T)

您现在可以编写一个遍历表的通用例程,检索每个参数,检查它是否有效,并将其写入输出流。

这里的一个小挑战是&Data_Struct::parameter1的类型可能与&Data_Struct::parameter2不同;所以你的表必须通过包装器,指向基类的指针或类似的东西来保存它。