在TLV8中准备数据

hug*_*gie 7 bluetooth ios tlv homekit

我正在用TLV8格式编写HomeKit(也许是蓝牙)特性.Apple医生说

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

根据Wikipeida,类型长度值是

类型

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

长度

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

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

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

hug*_*gie 6

哦,我明白了。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
Run Code Online (Sandbox Code Playgroud)

  • TLV8中的8表示类型和长度都是8位 (3认同)