如何处理蓝牙扫描中的nsinlinedata?

时间:2018-10-05 03:23:15

标签: ios swift bluetooth core-bluetooth raw-data

我想使用通过蓝牙扫描传递的数据。 我想从nsinlinedata中拆分和使用数据。

我通过蓝牙扫描导入数据,如下所示。

    func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
    if !peripherals.contains(peripheral){
        peripherals.append(peripheral)
    }

    let key = peripheral.identifier.uuidString
    let data = advertisementData.description
    let rawData = advertisementData
    rawData.forEach { (key, val) in
        print("\(key)   :   \(val)")
    }

    print("uuid: \(key)")
    if let previous = datas[key] {
        if (previous != data) {
            datas.updateValue(data, forKey: key)
            rawdatas.updateValue(advertisementData, forKey: key)
        }
    } else {
        datas[key] = data
        rawdatas[key] = advertisementData
    }
}

数据的形式如下。

//uuid: 81DB0A8E-6C47-1ADF-E1C5-3D7D4269D66D

//kCBAdvDataIsConnectable   :   0
//kCBAdvDataServiceData   :   {
//    FEAA = <20000200 19400000 03d80000 0000>;
//}
//kCBAdvDataServiceUUIDs   :   (
//    FEAA
//)

提取了以下数据。

if rawdata["kCBAdvDataServiceData"] != nil{
            let parseData:NSDictionary = rawdata["kCBAdvDataServiceData"] as! NSDictionary
            let data = parseData.allValues.first
// data => optional(<20000200 19400000 03d80000 0000>)
// data type => _NSinlineData
        }

我想从数据中取出数字5、6、7、8(0200),然后将其替换为十进制数字。我不知道如何处理nsinlinedata。

请帮我..请

0 个答案:

没有答案