ArraySlice<UInt8>+Bytes.swift 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. //
  2. // ArraySlice.swift
  3. // CryptoSwift
  4. //
  5. // Created by Marcin Krzyzanowski on 27/09/15.
  6. // Copyright © 2015 Marcin Krzyzanowski. All rights reserved.
  7. //
  8. // Disabled because performance is bad. The cost of generic approach is to big.
  9. /*
  10. extension ArraySlice where Element: _UInt8Type {
  11. func toUInt32Array() -> Array<UInt32> {
  12. var result = Array<UInt32>()
  13. result.reserveCapacity(16)
  14. for idx in self.startIndex.stride(to: self.endIndex, by: sizeof(UInt32)) {
  15. let val:UInt32 = (UInt32(self[idx.advancedBy(3)] as! UInt8) << 24) | (UInt32(self[idx.advancedBy(2)] as! UInt8) << 16) | (UInt32(self[idx.advancedBy(1)] as! UInt8) << 8) | UInt32(self[idx] as! UInt8)
  16. result.append(val)
  17. }
  18. return result
  19. }
  20. func toUInt64Array() -> Array<UInt64> {
  21. var result = Array<UInt64>()
  22. result.reserveCapacity(32)
  23. for idx in self.startIndex.stride(to: self.endIndex, by: sizeof(UInt64)) {
  24. var val:UInt64 = 0
  25. val |= UInt64(self[idx.advancedBy(7)] as! UInt8) << 56
  26. val |= UInt64(self[idx.advancedBy(6)] as! UInt8) << 48
  27. val |= UInt64(self[idx.advancedBy(5)] as! UInt8) << 40
  28. val |= UInt64(self[idx.advancedBy(4)] as! UInt8) << 32
  29. val |= UInt64(self[idx.advancedBy(3)] as! UInt8) << 24
  30. val |= UInt64(self[idx.advancedBy(2)] as! UInt8) << 16
  31. val |= UInt64(self[idx.advancedBy(1)] as! UInt8) << 8
  32. val |= UInt64(self[idx.advancedBy(0)] as! UInt8) << 0
  33. result.append(val)
  34. }
  35. return result
  36. }
  37. }
  38. */