首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用C创建TLV编码/解码msg数据?

如何使用C创建TLV编码/解码msg数据?
EN

Stack Overflow用户
提问于 2016-11-24 06:12:00
回答 1查看 1.1K关注 0票数 0

我试图用C.实际上是关于tlv格式的新手来对TLV msg数据进行编码/解码。我刚从Google上找到了几个代码,我不明白。

代码语言:javascript
复制
unsigned char *tlv_buffer = NULL;
int size = 1;
int len = 0;
int result;

tlv_buffer = BKS_MALLOC(size);
result = append_bertlv_data(&tlv_buffer, &size, &len, 0xDF04, 2, "\x34\x56");
result = append_bertlv_data(&tlv_buffer, &size, &len, 0xDF81, 3, "ref");

append_bertlv_data:

代码语言:javascript
复制
int append_bertlv_data ( unsigned char ** buf_data, unsigned int buf_size,unsigned int * buf_len, unsigned int tag, unsigned int len, constunsigned char * value )

buf_data

作为输入,指向BER数据元素应附加到的现有缓冲区的指针。作为输出,指向可能重新分配的缓冲区的指针.

buf_size

分配的内存的大小。

buf_len

在缓冲区中写入的数据长度。

我只需要了解buf_data (缓冲区)及其遗忘。有人帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2016-11-27 05:58:35

如果您可以发布函数append_bertlv_data的定义,可以解释更多。

逻辑是将数据打包为TAGValue格式。举个例子(上下文是emv ),.You有一个标签9F36 -应用程序事务计数器长度-2字节值- 0001。这将表示为9F36020001,整个数据以5个字节表示。(十六进制/包装bcd )。有一点要注意的是,长度也是十六进制。假设它是一个10字节的数据,我们会以9F360A12345678901234567890.的形式给它

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40779168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档