ByteExtension.swift 962 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. //
  2. // ByteExtension.swift
  3. // CryptoSwift
  4. //
  5. // Created by Marcin Krzyzanowski on 07/08/14.
  6. // Copyright (c) 2014 Marcin Krzyzanowski. All rights reserved.
  7. //
  8. import Foundation
  9. extension Byte {
  10. /** array of bits */
  11. internal func bits() -> [Bit] {
  12. let totalBitsCount = sizeof(Byte) * 8
  13. var bitsArray:[Bit] = [Bit](count: totalBitsCount, repeatedValue: Bit.Zero)
  14. for j in 0..<totalBitsCount {
  15. let bitVal:Byte = 1 << UInt8(totalBitsCount - 1 - j)
  16. let check = self & bitVal
  17. if (check != 0) {
  18. bitsArray[j] = Bit.One;
  19. }
  20. }
  21. return bitsArray
  22. }
  23. internal func bits() -> String {
  24. var s = String()
  25. let arr:[Bit] = self.bits()
  26. for (idx,b) in enumerate(arr) {
  27. s += (b == Bit.One ? "1" : "0")
  28. if ((idx + 1) % 8 == 0) { s += " " }
  29. }
  30. return s
  31. }
  32. }