我必须根据X.690编码对数据结构中存在的参数进行编码。 假设,我的结构是:
struct Data_Struct
{
parameter1
parameter2
parameter3
}
这些参数中的部分或全部可能包含有效数据,例如parameter1
和parameter3
。
然后我应该使用TLV编码仅编码parameter1
和parameter3
。
我是否必须按照顺序程序进行操作。喜欢,
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
值的长度是可变的。
答案 0 :(得分:0)
您需要创建一个包含成员和标记对的表,例如{&Data_Struct::parameter1, TagForParam1}
。这是不可避免的,因为编译器无法猜测该标记。
您还需要定义您认为“空”或“有效数据”的内容。这可能取决于类型。例如。 +INF
是有效浮点值吗?因此,添加重载函数bool IsValid(T)
您现在可以编写一个遍历表的通用例程,检索每个参数,检查它是否有效,并将其写入输出流。
这里的一个小挑战是&Data_Struct::parameter1
的类型可能与&Data_Struct::parameter2
不同;所以你的表必须通过包装器,指向基类的指针或类似的东西来保存它。