1 contributor
//
// 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<T>(from value: T) {
// var value = value
// self.init(buffer: UnsafeBufferPointer(start: &value, count: 1))
// }
func value<T>(from: Int) -> T {
let to = from + MemoryLayout<T>.size
//track("size: \(self.count) from:\(from) to:\(to)")
return self.subdata(in: from..<to).withUnsafeBytes { $0.load(as: T.self) }
}
func value<T>() -> T {
return self.withUnsafeBytes { $0.load(as: T.self) }
}
func subdata(in range: ClosedRange<Index>) -> 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) ?? ""
}
}