在 TLV8 中准备数据

Preparing data in TLV8

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

The value is an NSData object containing a set of one or more TLV8's, which are packed type-length-value items with an 8-bit type, 8-bit length, and N-byte value.

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

Type

A binary code, often simply alphanumeric, which indicates the kind of field that this part of the message represents;

Length

The size of the value field (typically in bytes);

Value

Variable-sized series of bytes which contains data for this part of the message.

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

哦,我明白了。 TLV8 由三个部分组成:"Tag"、"Length" 和"Value"。我不知道8是什么意思

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

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

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