quanghuy9742
8/28/2017 - 4:01 PM

Data -> UInt8, UInt16, UInt32 and convert back

Data -> UInt8, UInt16, UInt32 and convert back

// https://gist.github.com/huguesbr/b2a316a4753093015a27

import Foundation

// https://gist.github.com/tannernelson/73d0923efdee50e6c38f
extension NSData {
    var uint8: UInt8 {
        get {
            var number: UInt8 = 0
            self.getBytes(&number, length: sizeof(UInt8))
            return number
        }
    }
}

extension NSData {
    var uint16: UInt16 {
        get {
            var number: UInt16 = 0
            self.getBytes(&number, length: sizeof(UInt16))
            return number
        }
    }
}

extension NSData {
    var uint32: UInt32 {
        get {
            var number: UInt32 = 0
            self.getBytes(&number, length: sizeof(UInt32))
            return number
        }
    }
}

extension NSData {
    var uuid: NSUUID? {
        get {
            var bytes = [UInt8](count: self.length, repeatedValue: 0)
            self.getBytes(&bytes, length: self.length * sizeof(UInt8))
            return NSUUID(UUIDBytes: bytes)
        }
    }
}

extension NSData {
    var stringASCII: String? {
        get {
            return NSString(data: self, encoding: NSASCIIStringEncoding) as String?
        }
    }
}

extension NSData {
    var stringUTF8: String? {
        get {
            return NSString(data: self, encoding: NSUTF8StringEncoding) as String?
        }
    }
}

extension Int {
    var data: NSData {
        var int = self
        return NSData(bytes: &int, length: sizeof(Int))
    }
}

extension UInt8 {
    var data: NSData {
        var int = self
        return NSData(bytes: &int, length: sizeof(UInt8))
    }
}

extension UInt16 {
    var data: NSData {
        var int = self
        return NSData(bytes: &int, length: sizeof(UInt16))
    }
}

extension UInt32 {
    var data: NSData {
        var int = self
        return NSData(bytes: &int, length: sizeof(UInt32))
    }
}

extension NSUUID {
    var data: NSData {
        var uuid = [UInt8](count: 16, repeatedValue: 0)
        self.getUUIDBytes(&uuid)
        return NSData(bytes: &uuid, length: 16)
    }
}

extension String {
    var dataUTF8: NSData? {
        return self.dataUsingEncoding(NSUTF8StringEncoding)
    }
}

extension NSString {
    var dataASCII: NSData? {
        return self.dataUsingEncoding(NSASCIIStringEncoding)
    }
}