TNF(Type Name Format) = 1,說明TYPE類型是 NFC Forum well-known type [NFC RTD],
下表是TNF編碼對應表
因為SR=1且IL=0,所以NDEF記錄可簡化為如下結構
Byte 1: 02
TYPE_LENGTH = 2,TYPE域長度為2
Byte 2: 1F
PAYLOAD_LENGTH = 0x1F,Payload域長度為31
Byte 3-4: 53 70
TYPE = "Sp",因為TYPE域長度為2,所以此處TYPE取2個字節
此后全是PAYLOAD域的內容,因為TYPE="Sp",所以需要使用的Spec是“Smart Poster Record Type Definition”
(2)智能海報的記錄類型其實也是一個NDEF消息。沒錯,NDEF記錄的PAYLOAD域可以存放任何東西,包括嵌套NDEF消息。
智能海報的內容可以包括標題、URI、動作、圖標、大小、類型等記錄,其中URI記錄是必須有的,其他的可選,次序無所謂。
1)現在將智能海報的內容貼過來,如下
91 01 0E 54 02 65 6E 68 65 6C
6C 6F 20 77 6F 72 6C 64 51 01
09 55 01 73 69 6E 61 2E 63 6F
6D
Byte 0: 91
0x91 = 10010001B,對應的標志位如下:
MB = 1,說明這是首記錄
ME = 0,說明后面還有記錄
CF = 0,說明記錄未被切塊
SR = 1,說明這是短記錄,PAYLOAD_LENGTH 占1字節
IL = 0,說明沒有 ID_LENGTH 和 ID 域
TNF = 1,說明TYPE類型是 NFC Forum well-known type
Byte 1: 01
TYPE_LENGTH = 1,TYPE域長度為1
Byte 2: 0E
PAYLOAD_LENGTH = 0x0E,Payload域長度為14
Byte 3: 54
TYPE = "T",說明是文本記錄類型,適用“Text Record Type Definition”
Byte 4-17: 02 65 6E 68 65 6C 6C 6F 20 77 6F 72 6C 64
這是文本記錄的內容
下面對“02 65 6E 68 65 6C 6C 6F 20 77 6F 72 6C 64”按照文本記錄格式解碼。
文本記錄格式如下:

Byte 0: 02
Status = 2,由下表可知,IANA語言碼長度=2

Byte 1-2: 65 6E
ISO/IANA語言碼 = “en”,編碼為US-ASCII碼
Byte 3-13:68 65 6C 6C 6F 20 77 6F 72 6C 64
按照ASCII碼解碼可得“hello world”
至此,對海報內容的第一條NDEF記錄解碼完成,接下來是對剩余內容解碼。
2)剩余內容為“51 01 09 55 01 73 69 6E 61 2E 63 6F 6D”,同樣也是按照NDEF記錄來解碼。
Byte 0: 51
0x91 = 01010001B,對應的標志位如下:
MB = 0,說明這不是首記錄
ME = 1,說明這是末記錄
CF = 0,說明記錄未被切塊
SR = 1,說明這是短記錄,PAYLOAD_LENGTH 占1字節
IL = 0,說明沒有 ID_LENGTH 和 ID 域
TNF = 1,說明TYPE類型是 NFC Forum well-known type
Byte 1: 01
TYPE_LENGTH = 1,TYPE域長度為1
Byte 2: 09
PAYLOAD_LENGTH = 0x09,Payload域長度為9
Byte 3: 55
TYPE = "U",說明是URI記錄類型,適用“URI Record Type Definition”
Byte 4-12: 01 73 69 6E 61 2E 63 6F 6D
這是URI記錄的內容
URI記錄內容格式如下:
Byte 0: 01
ID碼 = 1,由下表可知,對應的協議是“http://www.”
Byte 1-8: 73 69 6E 61 2E 63 6F 6D
按照UTF-8格式解碼可得:“sina.com”
至此,整個NDEF消息解碼完畢。
回顧一下吧,整個結構的解碼將其如下分解:
D1 02 1F 53 70 <-- 智能海報
91 01 0E 54 02 65 6E 68 65 6C 6C 6F 20 77 6F 72 6C 64 <-- 文本
51 01 09 55 01 73 69 6E 61 2E 63 6F 6D <-- URI