[連載] 3-2 NDEF的TEXT記錄型式

TEXT這種一般的文字記錄,是NDEF記錄中最簡單的一種。當NFC手機讀取到此類型的TAG時,會直接顯示NDEF文字記錄中所記載的文字內容。 實際上,單獨使用文字記錄的機會不大,除非是留作紀念用的金玉良言;或者是與其他類型記錄同時存在,作為說明指示用的文字。

文字型的記錄,可以分成3個欄位來描述:狀態位元組(STATUS)、語言編碼(ISO/IANA Language Code)、與內容本體(TEXT CONTENT)。 假設我們要作一個“Happy Birthday!”的文字訊息記錄,首先表頭可以是MB=ME=1, CF=0, SR=1, IL=0, TNF=0x01(Well_Known Record),以HEX表示就是0xD1(b11010001); 接著表頭之後是TYPE LENGTH,文字記錄的類別關鍵字是“T”所以其長度為0x01; PAYLOAD LENGTH係指文字記錄的長度,也就是所有欄位字數的總和。文字記錄的第一個欄位:狀態位元組,長度是0x01;語言編碼用0x02個長度來表示;最後內容本體“Happy Birthday!”這些字串的長度佔0x0F(15)個位元組;所以PAYLOAD LENGTH = 1 + 2 + 15 = 18 (0x12)。

如下圖所示,整個NDEF Message TLV是以關鍵類別0x03開頭作為識別,其後訊息所占長度為22(0x16)個位元組。之後的第一個位元組,就是這筆記錄正式的開端;也就是此記錄的表頭(0xD1)。整串記錄就是:“D1 01 12 54 02 65 6E 48 61 70 70 79 20 42 69 72 74 68 64 61 79 21”剛好一共22個位元組。



現在我們將同樣的文字記錄,改寫成中文的“生日快樂!”。 由於文字均採UTF-8的編碼方式,一個全形中文字或標點符號佔3個Byte長度。 如下圖所示,語言代碼由"en"改為"zh",雖然只是4個中文加一個全形的符號,剛好與英文文字記錄所占的長度相同。



留言

熱門文章