在TLV8中准备数据

时间:2017-05-19 07:36:59

标签: ios bluetooth homekit tlv

我正在以TLV8格式编写HomeKit(也许是蓝牙)特性。 Apple doc说

  

该值是一个NSData对象,包含一组一个或多个TLV8,   它是8位类型,8位的打包类型长度值项   长度和N字节值。

根据Wikipeida,类型长度值是

  

类型

     

二进制代码,通常只是字母数字,表示消息的这一部分所代表的字段类型;

     

长度

     

值字段的大小(通常以字节为单位);

     

     

可变大小的字节系列,包含此部分消息的数据。

我不知道怎么打包一个。我想我可以将原始字节写入NSData,但是如果我需要填充等,我应该为pad写什么呢?那么有一个如何做的例子吗?

1 个答案:

答案 0 :(得分:4)

哦,我明白了。 TLV8由三部分组成:“Tag”,“Length”和“Value”。我不知道8的意思。

标签和长度都是UInt8。我相信标签可能取决于TLV8的使用位置。长度是值的长度。价值就是它自己的内容。

所以,当我想发送一个简单的1作为值时,我使用:

let tag = 0x02 // For example
let length = 0x01
let value = 0x01
let data = Data(bytes: [tag, length, value]) // NSData