TLV格式是什麼格式

2022-03-04 01:00:02 字數 1504 閱讀 8791

tlv 格式是什麼格式

一種可變格式, tlv 的意思就是: type 型別, lenght 長度, value 值; type 和 length 的長度固定,一般那是 2 、 4 個位元組; value 的長度有 length 指定;

解析方法:

1. 讀取 type 轉換為 ntohl 、 ntohs 轉換為主機位元組序得到型別;指標偏移 +2 或 4

2. 讀取 lenght ,轉換為 ntohl 、 ntohs 轉換為主機位元組序得到長度;指標偏移 +2 或 4

3. 根據得到的長度讀取 value ,指標偏移 +length ; 。 。 。 。 繼續處理後面的 tlv ; 標籤 (tag) 欄位是關於標籤和編碼格式的資訊; 長度 (length) 字段定義數值的長度; 內容 (value) 字段表示實際的數值。

因此,乙個編碼值又稱 tlv(tag,length,value) 三元組。編碼可以是基本型或結構型,如果它 表示乙個簡單型別的、完整的顯式值,那麼編碼就是基本型 (primitive) ;如果它表示的值具 有巢狀結構,那麼編碼就是結構型 (constructed) 。

tlv 編碼就是指先對 tag 編碼,再對 length 編碼,最後對 value 編碼。 ber 編碼的長度確定 的編碼方式就是這樣的。 ber 編碼有兩種方式:

一種是長度確定的編碼方式。 這由 3 部分組成 identifier octets 、 length octets 和 contents octets (可以和 tlv 對應) 。

另一種是長度不確定的編碼方式。這由 4 部分組成 identifier octets 、 length octets 、 contents octets 、 end-of-contents octets 。其 中 length octets 為 0x80 , end-of-contents octets 為 0x00 00 。

每種型別都能夠編碼成長度確定的編碼方式, 但是有的類 型不能夠編碼成長度不確定的編碼方式。 der 編碼只能使用長度確定的編碼方式。 identifier octets 由 3 部分組成 class 、 p/c 和 tag number 。

p/c 位如果為 1 則表示是 constructed 的, 為 0 表示是 primitive 。如果 0<=t ag number<=30 ,則整個 identifier octets 只有乙個位元組,否 則第乙個位元組的後 5 位前為 1 ,接下來找第乙個最高位為 0 的位元組,該位元組就是 identifier octets 的最後乙個位元組。從第二個位元組到最後乙個位元組去掉最高位的值拼起來就是 t ag number 的值。

長度確定的編碼方式的 length octets 有兩種方法編碼長度,一種是只用乙個位元組表示長度, 其最高位為 0 ,後 7 位表示長度值,顯然這樣只能表示 0-127 。

另一種是第乙個位元組的最高 位為 1 ,其他位表示後面還有多少個位元組屬於 length octets 。後面的那些位元組組成的就是長 度值。長度值表示的是 contents octets 所佔的位元組數。 der 要求如果長度為 0-127 則要使用 第一種方式,如果大於 127 則使用後一種方式。

TLV格式說明

下面是對tag後面出現0x81的說明 tlv tag length value 即每個子域由 tag標籤 t 子域取值的長度 l 和子域取值 v 構成。tag標籤的屬性為 bit,由 16進製表示,佔1 2個位元組長度。例如,9f33 為乙個占用兩個位元組的 tag標籤。而 95 為乙個占用乙個位元...

TLV格式解析

tlv tlv格式資料是指由 tag,length value 組成的資料。具體說明如下 tag標籤的屬性為 bit,由 16進製表示,佔1 2個位元組長度。例如,0x9f33 為乙個占用兩個位元組 的tag 標籤。而 0x95 為乙個占用乙個位元組的 tag標籤。若 tag標籤的第乙個位元組 注 ...

TLV格式及編碼

幾乎所有的需要在卡片和終端之間傳送的資料都是tlv格式的.pboc文件裡並沒有對tlv編碼細節做具體說明,而emv的手冊裡雖有敘述,但並不詳細.我下面就要很詳細的分析tlv的編碼格式並給出相應的tlv解碼的偽 tlv是tag,length和value的縮寫.乙個基本的資料元就包括上面三個域.tag唯...