我尝试按照此示例重新添加数据并将其发送到服务器。
CertainStructure_t *cs = 0;
ber_decode(0, &asn_DEF_CertainStructure, &cs, buffer, buffer_length);
cs->val1 = 123; /* Modify the contents */
der_encode(&asn_DEF_CertainStructure, cs, write_handle, 0);
这段代码是我写的
Message01_t *a;
a->number = 123;
der_encode(&Message01, a, write_handle, 0);
Message01的描述是
Message01 ::= SEQUENCE
{
number INTEGER -- inital integer
}
我收到这个错误
error: incompatible types in assignment
error: ‘Message01’ undeclared (first use in this function)
最佳答案
假设这是在线 ASN.1 编译器 http://lionet.info/asn1c/asn1c.cgi
只是想让它编译......并不真正知道我在做什么:
以下刚刚编译:
#include <Message01.h>
int write_handle(void const*, unsigned long, void*) {
// no idea what this is
return 0;
}
int main() {
Message01_t *a=new Message01_t(); // Must be created/allocated/whatever
a->number = 123;
der_encode(&asn_DEF_Message01, a, write_handle, 0);
}
注释:
- 正如您的示例所示,您必须使用 &asn_DEF_MyTypeName。似乎是生成的静态变量,带有 ASN.1 类型的描述符。
- 未收到分配错误。数字很长...所以应该没问题。
- 必须为 Message01_t *a 变量分配一些内容。我使用过 C++,选择你的...或者在 der_encode 调用中使用局部变量和 &a。
关于c - 使用 ASN.1 编码数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23583590/