Преобразовать двоичную строку (80 символов) в данные в Swift - PullRequest
0 голосов
/ 31 марта 2020

У меня есть двоичная строка, которая имеет 80 символов. Например, 1110000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 (80 бит, т.е. 10 байтов) и хотел бы преобразовать его в данные

В одном случае я пытался

    let binStr = "11100000111111111111111111111111111111111111111111111111111111111111111111111111"
    let splittedStr = binStr.split(by: 8) // which splits the string 8 character lenght
    var dataVal = Data()
    for strs in splittedStr {
        var val = strtoul(strs, nil, 2)
        let binaryData = Data(bytes: &val, count: MemoryLayout<UInt8>.size)
        dataVal += binaryData 
    }

, но выглядело как возвращаемое значение. Это правильный способ сделать это?

Я использовал это, чтобы разбить строку:

extension String {
    func split(by length: Int) -> [String] {
        var startIndex = self.startIndex
        var results = [Substring]()

        while startIndex < self.endIndex {
            let endIndex = self.index(startIndex, offsetBy: length, limitedBy: self.endIndex) ?? self.endIndex
            results.append(self[startIndex..<endIndex])
            startIndex = endIndex
        }

        return results.map { String($0) }
    }
}
...