我试图用C.实际上是关于tlv格式的新手来对TLV msg数据进行编码/解码。我刚从Google上找到了几个代码,我不明白。
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:
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 (缓冲区)及其遗忘。有人帮我吗?
发布于 2016-11-27 05:58:35
如果您可以发布函数append_bertlv_data的定义,可以解释更多。
逻辑是将数据打包为TAGValue格式。举个例子(上下文是emv ),.You有一个标签9F36 -应用程序事务计数器长度-2字节值- 0001。这将表示为9F36020001,整个数据以5个字节表示。(十六进制/包装bcd )。有一点要注意的是,长度也是十六进制。假设它是一个10字节的数据,我们会以9F360A12345678901234567890.的形式给它
https://stackoverflow.com/questions/40779168
复制相似问题