NSData from Byte array in Swift

前端 未结 5 1540
闹比i
闹比i 2020-12-13 18:15

I\'m trying to create an NSData var from an array of bytes.

In Obj-C I might have done this:

NSData *endMarker = [[NSData al

5条回答
  •  误落风尘
    2020-12-13 18:41

    Swift 3 extension

    extension Data {
    
        init(fromArray values: [T]) {
            var values = values
            self.init(buffer: UnsafeBufferPointer(start: &values, count: values.count))
        }
    
        func toArray(type: T.Type) -> [T] {
            return self.withUnsafeBytes {
                [T](UnsafeBufferPointer(start: $0, count: self.count/MemoryLayout.stride))
            }
        }
    }
    

    Usage

    let bytes:[UInt8] = [0x00, 0xf4, 0x7c]
    let data = Data(fromArray: someBytes)
    print(data as NSData)
    
    let bytes = data.toArray(type: UInt8.self)
    print(bytes)
    

提交回复
热议问题