簡體   English   中英

如何使用C創建TLV編碼/解碼味精數據?

[英]How to create TLV encode/decode msg data using C?

我正在嘗試使用C對tlv msg數據進行編碼/解碼。實際上我是關於TLV格式化的新手。 我剛剛從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-TLV數據元素應附加到該緩沖區。 作為輸出,指向可能重新分配的緩沖區的指針。

buf_size

分配的內存大小。

buf_len

寫入緩沖區的數據長度。

我只需要了解buf_data(緩沖區)及其混淆。 有人幫我嗎?

如果您可以發布函數append_bertlv_data的定義,則可以解釋更多。

邏輯是將數據打包為[TAG] [Length] [Value]格式。 舉個例子(上下文是emv)。您有一個標簽9F36-應用程序事務計數器長度-2個字節的值-0001。這將表示為9F36020001整個數據以5個字節表示。 (十六進制/打包的bcd)。 要注意的一件事是長度也為十六進制。 假設這是一個10字節的數據,我們將其指定為9F36 0A 12345678901234567890。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM