将BLE当前时间转换为日期

马特·C

我正在尝试从蓝牙设备读取当前时间。

我目前有一个10字节的数组,但不确定如何将其转换为可读的数组。

这是我从中读取的代码。

private func printTime(from characteristic: CBCharacteristic) {
        guard let timeData = characteristic.value else { return }
        let byteArray = [UInt8](timeData)


        print("Time ",byteArray, "timeData ", timeData)
    }

这是输出。

Time  [224, 7, 1, 3, 4, 36, 5, 0, 0, 1] timeData  10 bytes

这是我针对该特性针对该设备获得的规格。

3.2.1.  Current Time        
3.2.1.1.    UUID:       2A2B
3.2.1.2.    Read:       Yes
3.2.1.3.    Write:      Yes
3.2.1.4.    Notify:     Yes
3.2.1.5.    Value:      byte[10]    
3.2.1.6.    Description:        0 – 1:  Year
                                2:  Month
                                3:  Day
                                4:  Hour
                                5:  Minute
                                6:  Seconds
                                7:  Day of Week
                                8:  256 Fractions of a Seconds
                                9:  Adjust Reason

所以我知道那是224,7。我假设是2016年,但是我不确定如何在代码中进行转换。

里奥·达布斯

要将数据/字节转换为数字类型,可以查看此文章

extension Numeric {
    init<D: DataProtocol>(_ data: D) {
        var value: Self = .zero
        let size = withUnsafeMutableBytes(of: &value, { data.copyBytes(to: $0)} )
        assert(size == MemoryLayout.size(ofValue: value))
        self = value
    }
}

extension DataProtocol {
    func value<N: Numeric>() -> N { .init(self) }
    var uint16: UInt16 { value() }
}

现在,您可以轻松地将字节转换为任何数字类型:

let timeData: [UInt8] = [224, 7, 1, 3, 4, 36, 5, 0, 0, 1]
let timeDate = DateComponents(calendar: .current,
                               timeZone: .current,
                               year: Int(timeData[0..<2].uint16),
                               month: Int(timeData[2]),
                               day: Int(timeData[3]),
                               hour: Int(timeData[4]),
                               minute: Int(timeData[5]),
                               second: Int(timeData[6])).date!
timeDate // "Jan 3, 2016 at 4:36 AM"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将日期/时间转换为当前的JDN

来自分类Dev

如何将正常日期转换为当前时间

来自分类Dev

将字符串转换为日期时间并与当前日期进行比较

来自分类Dev

logstash将时间转换为日期时间

来自分类Dev

将时间戳转换为日期时间

来自分类Dev

将当前日期转换为英语

来自分类Dev

如何将当前日期时间转换为特定格式

来自分类Dev

将String转换为时间格式并附加当前日期-Shell / ksh

来自分类Dev

如何将当前日期时间转换为 Math.PI?

来自分类Dev

如何将日期时间字符串转换为当前时区

来自分类Dev

如何将 UTC 日期时间字符串转换为用户的当前时区?

来自分类Dev

将日期转换为整数(时间戳)

来自分类Dev

将时间戳转换为日期Excel

来自分类Dev

将纳秒转换为日期时间

来自分类Dev

将日期时间转换为RFC 3339

来自分类Dev

仅将时间戳转换为日期

来自分类Dev

将值转换为日期时间

来自分类Dev

Python将日期时间转换为正时

来自分类Dev

将数值转换为日期时间

来自分类Dev

将日期转换为时间戳

来自分类Dev

将unix时间转换为日期

来自分类Dev

将小时转换为日期时间

来自分类Dev

将日期时间转换为碳实例

来自分类Dev

将行转换为日期时间Python

来自分类Dev

将日期转换为firetstore时间戳

来自分类Dev

将时间戳转换为日期?

来自分类Dev

Mongo将时间戳转换为日期

来自分类Dev

将“对象”列转换为日期时间

来自分类Dev

熊猫:将日期时间转换为月末