ExtensionData.swift 987 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. }
  22. extension Data {
  23. var format: String {
  24. let array = [UInt8](self)
  25. let ext: String
  26. switch (array[0]) {
  27. case 0xFF:
  28. ext = "jpg"
  29. case 0x89:
  30. ext = "png"
  31. case 0x47:
  32. ext = "gif"
  33. case 0x49, 0x4D :
  34. ext = "tiff"
  35. default:
  36. ext = "unknown"
  37. }
  38. return ext
  39. }
  40. }