zoukankan      html  css  js  c++  java
  • Android Ndef Message解析

     @concept:NDEF NFC Form论坛定义的NFC数据交换通用数据格式。

    如上所示:一条NDEF消息由诸多Record记录组成,Record又由Header和Payload组成,Header定义了Payload的ID 长度与ID,携带数据的格式与格式长度,携带的数据的字节数。

    Header的具体结构如下图:

    第一个字节是状态字节(1byte=8bit),用于指定Record有无ID,该Record是首记录还是尾记录,是长记录还是短记录,以及关键的Record的类型。

    Record的类型可以有一下8种,Type指定的是载荷Payload的类型。

    常见的Payload类型有:Text、URI、MIME类型,TNF_WELL_KNOWN类型的Record类型,有以下几种Payload类型。

    本文重点关注RTD_TEXT类型的解析,Payload类型为RTD_TEXT的Payload结构如下。

    第一个字节(1byte)是状态标志位,位定如下:

    这个状态字节0-5位定义了语言码的长度,最高位MSB定义文本的编码格式。注意语言码和文本编码是两个概念,前面定义了语言码长度,紧接着Payload第二个字节开始就定义了对应长度的语言码字节。语言码之后的字节就是文本的字节(实际的内容),文本的编码方式就是MSB位定义的编码格式。

    相关解析代码如下所示:0200是八级制对应十六进制0x80,最后解析出来的字符串放在payloadStr字符变量中。

    大致流程为:取Record状态字节,根据文本编码方式以及语言码长度取出语言码,根据文本的编码方式将文本内容对应的字节按照相应编码格式转换为字符串。

  • 相关阅读:
    SpringMVC
    spring-02
    spring-01
    适配器模式
    状态模式
    抽象工厂模式
    观察者模式(发布-订阅模式)
    建造者模式(生成器模式)
    外观模式
    迪米特法则
  • 原文地址:https://www.cnblogs.com/geekj/p/10755912.html
Copyright © 2011-2022 走看看