0

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

struct Data_Struct
{
   parameter1
   parameter2
   parameter3
}

这些参数中的一些或全部可能具有有效数据,例如,parameter1parameter3。然后我应该只编码parameter1parameter3使用 TLV 编码。我是否必须遵循顺序程序才能遵循这一点。喜欢,

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
  • 由于程序是重复的,我可以模块化吗?
  • 最好的方法是什么?
  • 有没有办法按顺序访问参数?
  • 我怎样才能在参数和它的标签之间建立关系?

值的长度是可变的。

4

1 回答 1

0

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

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

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

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

于 2013-02-14T09:12:06.223 回答