2017-05-19 20 views
6

私はTLV8形式のHomeKit(おそらくBluetooth)特性を書いています。リンゴDOCはTLV8でデータを準備する

値は8ビットのタイプ、8ビット 長を有するタイプレングス値項目を充填された1つ以上のTLV8年代、 のセットを含むNSDataオブジェクトであり、そしてN-言いますバイト値。

Wikipeidaによれば、タイプレングス値は

タイプ

メッセージのこの部分が表すフィールドの種類を示すバイナリコード、しばしば単に英数字です。

(典型的にはバイト単位)値フィールドのサイズ。メッセージのこの部分のためのデータを含むバイトの

可変長シリーズ。

私はどのように1つをパックするかわかりません。私はNSDataに生のバイトを書くことができると思いますが、パディングなどが必要な場合は何を書きますか?そうする方法の例はありますか?

答えて

2

私はそれを理解しました。 TLV8は、「タグ」、「長さ」、および「値」の3つのセクションで構成されています。私は8が何を意味するのか分からない。

タグと長さはいずれもUInt8です。私はタグがTLV8がどこで使われているかに依存していると信じています。長さは値の長さです。値はそれ自身の内容です。

だから私は、値として、単純な1を送信する場合、私が使用します。

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

スウィフトは、上記のコードからもうタイプを推測することはできないようです。 これはかかわらず動作するように思われる: 'コードはせタグ:UINT8 = 0x02の せ長UINT8 = 0x01の せ値:UINT8 = 0x01の LETバイト:[UINT8] = [タグ、長さ、値]' – addzo

+2

TLV8の8は、タイプと長さが8ビットであることを示します –

関連する問題