posts - 93,  comments - 2,  trackbacks - 0
          問題:按照NDEF消息格式來解析下列Hex串?

          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

          解答:
              
          (1)NDEF記錄格式如下,
             
              
              Byte 0: D1
              0xD1 = 11010001B,對應的標志位如下:
              MB(Message Begin) = 1,說明這是首記錄
              ME(Message End) = 1,說明這是末記錄(說明消息只有一個記錄)
              CF(Chunk Flag) = 0,說明記錄未被切塊
              SR(Short Record) = 1,說明這是短記錄,PAYLOAD_LENGTH 占1字節
              IL(ID_LENGTH field is present) = 0,說明沒有 ID_LENGTH 和 ID 域
              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

          posted on 2014-05-14 16:17 Terry Zou 閱讀(1850) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2014年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          Java

          搜索

          •  

          最新隨筆

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 玉田县| 宽城| 晋江市| 蕉岭县| 电白县| 满洲里市| 锦屏县| 太仆寺旗| 宁明县| 晴隆县| 天祝| 肃北| 永靖县| 林周县| 赤壁市| 樟树市| 抚远县| 府谷县| 北碚区| 曲阜市| 梁山县| 武川县| 蓝田县| 尤溪县| 当雄县| 洞头县| 墨脱县| 光泽县| 红河县| 阳高县| 虞城县| 绥德县| 额尔古纳市| 满城县| 大悟县| 桃源县| 昌江| 彰化县| 朝阳市| 黄冈市| 石狮市|