// // Data.swift // USB Meter // // Created by Bogdan Timofte on 08/03/2020. // Copyright © 2020 Bogdan Timofte. All rights reserved. // import Foundation extension Data { var hexEncodedStringValue : String { get{ return map { String(format: "%02hhx", $0) }.joined() } } //Ceva mostenit // init(from value: T) { // var value = value // self.init(buffer: UnsafeBufferPointer(start: &value, count: 1)) // } func value(from: Int) -> T { let to = from + MemoryLayout.size //track("size: \(self.count) from:\(from) to:\(to)") return self.subdata(in: from..() -> T { return self.withUnsafeBytes { $0.load(as: T.self) } } func subdata(in range: ClosedRange) -> Data { return subdata(in: range.lowerBound ..< range.upperBound) } func subdata(from: Int, length: Int) -> Data { return subdata(in: self.startIndex + from ..< self.startIndex.advanced(by: from + length)) } func subdata(from: Int, to: Int) -> Data { return subdata(in: self.startIndex + from ... self.startIndex.advanced(by: to)) } var utf8String: String { return string(as: .utf8) } var asciiString: String { return string(as: .ascii) } func string(as encoding: String.Encoding) -> String { return String(data: self, encoding: encoding) ?? "" } }