ExtensionData.swift 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import Foundation
  2. extension Data {
  3. var bytes : [UInt8]{
  4. return [UInt8](self)
  5. }
  6. }
  7. extension Data {
  8. struct HexEncodingOptions: OptionSet {
  9. let rawValue: Int
  10. static let upperCase = HexEncodingOptions(rawValue: 1 << 0)
  11. }
  12. func hexEncodedString(options: HexEncodingOptions = []) -> String {
  13. let format = options.contains(.upperCase) ? "%02hhX" : "%02hhx"
  14. return map { String(format: format, $0) }.joined()
  15. }
  16. }
  17. extension Data {
  18. var hexDescription: String {
  19. return reduce("") {$0 + String(format: "%02x", $1)}
  20. }
  21. var binaryDescription: String {
  22. return reduce("") {$0 + String(format: "%0b", $1)}
  23. }
  24. }
  25. extension Data {
  26. var format: String {
  27. let array = [UInt8](self)
  28. let ext: String
  29. switch (array[0]) {
  30. case 0xFF:
  31. ext = "jpg"
  32. case 0x89:
  33. ext = "png"
  34. case 0x47:
  35. ext = "gif"
  36. case 0x49, 0x4D :
  37. ext = "tiff"
  38. default:
  39. ext = "unknown"
  40. }
  41. return ext
  42. }
  43. }