Data+CKBitArray.swift 772 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. //
  2. // Data+CKBitArray.swift
  3. // CKMnemonic
  4. //
  5. // Created by 仇弘扬 on 2017/7/25.
  6. // Copyright © 2017年 askcoin. All rights reserved.
  7. //
  8. import Foundation
  9. import CryptoSwift
  10. public extension UInt8 {
  11. public func ck_bits() -> [String] {
  12. let totalBitsCount = MemoryLayout<UInt8>.size * 8
  13. var bitsArray = [String](repeating: "0", count: totalBitsCount)
  14. for j in 0 ..< totalBitsCount {
  15. let bitVal: UInt8 = 1 << UInt8(totalBitsCount - 1 - j)
  16. let check = self & bitVal
  17. if (check != 0) {
  18. bitsArray[j] = "1"
  19. }
  20. }
  21. return bitsArray
  22. }
  23. }
  24. public extension Data {
  25. public func ck_toBitArray() -> [String] {
  26. var toReturn = [String]()
  27. for num: UInt8 in bytes {
  28. toReturn.append(contentsOf: num.ck_bits())
  29. }
  30. return toReturn
  31. }
  32. }