2017-05-19 14 views
6

TLV8 biçiminde bir HomeKit (belki de Bluetooth) özelliği yazıyorum. Elma doktorTLV8'de veri hazırlama

değeri 8 bitlik bir türü, 8-bit uzunluğu tipi uzunlukta değer ürün paketlendi bir veya daha fazla TLV8 's, bir dizi ihtiva eden bir NSData amacı, ve N- der bayt değeri.

Wikipeida göre bir tip-uzunluk değeri

Tip

mesajın bu kısmı temsil ettiği alanın tür gösterir sadece alfasayısal genellikle bir ikili kod, olduğu;

uzunluğu

(tipik olarak bayt cinsinden) değer alanının boyutunu; mesajın bu bölümü için veri içeren bayt

değer

değişken boyutlu dizi.

Paketleme hakkında hiçbir fikrim yok. NSData için ham bayt yazabilirim, ama herhangi bir dolguya ihtiyacım varsa ped için ne yazabilirim, vb. Bunun nasıl yapılacağına dair bir örnek var mı?

cevap

2

Ben bunu anladım. TLV8 üç bölümden oluşur: "Etiket", "Uzunluk" ve "Değer". 8'in ne anlama geldiğini bilmiyorum.

Her iki etiket ve uzunluk UInt8'dir. Etiketin TLV8'in kullanıldığı yere bağlı olabileceğine inanıyorum. Uzunluk, değerin uzunluğudur. Değer kendiliğinden içeriktir. Bir değer olarak basit 1 göndermek istediğinizde

Yani, kullanın:

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

Swift yukarıdaki koddan artık türünü tahmin etmek mümkün olmayacaktır görünüyor. Uint8 = 0x01 let değeri: Uint8 = 0x01 bayt izin: [Uint8] = [etiket, uzunluk, değer] ' – addzo

+2

Uint8 = 0x02 uzunluğu izin: ' kod etiketi izin: Bu da iş gibi görünüyor TLV8'deki 8, türün ve uzunluğun 8 bit olduğunu gösterir. –

İlgili konular