8

我正在编写 TLV8 格式的 HomeKit(可能是蓝牙)特性。苹果文档说

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

根据维基百科,类型长度值为

类型

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

长度

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

价值

可变大小的字节序列,其中包含这部分消息的数据。

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

4

1 回答 1

6

哦,我想通了。TLV8 由三个部分组成:“标签”、“长度”和“值”。我不知道8是什么意思。

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

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

let tag = 0x02 // For example
let length = 0x01
let value = 0x01
let data = Data(bytes: [tag, length, value]) // NSData
于 2017-05-22T08:45:38.980 回答