学习了解ASN.1 Rectangle encode计划。
目前网站上提供的程序是以XML格式打印并生成ber文件。我想以十六进制编码格式(hexdump)打印/读取PDU。最初,我尝试使用编辑器打开test.ber文件。但不能正常开放。
我发现uper_encoder完成了这项工作,它的参数与ber_encode相同的参数相同。编译也是成功cc -g -I. -o rencode.x *.c
但是在执行时。程序在函数uper_encode处失败并显示错误Couldn't encode rectangle
,因为它返回-1。
ec = uper_encode (&asn_DEF_Rectangle, rectangle, write_out, fp)
我可以帮助以十六进制格式打印它们。
答案 0 :(得分:1)
@Gopi,
有了警告我对Lev Walkin的ASN.1编译器没有经验,你可能会遇到几个问题:
十六进制转储意味着解码,而不是编码,但您尝试使用uper_encode
。
test.ber
文件是BER编码的,但您正在使用PER函数尝试将其转储。
我无法帮助您使用代码,但您需要使用类似ber_decode
(或等效的东西)来解码数据;然后你可以从解码的字节创建一个十六进制转储。