Строка двоичных значений в двоичный файл - PullRequest
0 голосов
/ 21 июня 2020

У меня есть большая строка (~ 600 байт) двоичных битов, которую мне нужно сохранить в двоичный файл.

Если я просто сохраню строку в файл, используя String.write, тогда 1 и 0 будут закодированы как их значения Unicode / ASCII.

Мне это нужно, чтобы, если я открою файл, например, с помощью xxd -b, он выводил бы те же двоичные биты, что и у меня сейчас в строке.

Как я могу выполнить sh это?

1 Ответ

0 голосов
/ 21 июня 2020

Если у вас есть строка с серией символов «0» и «1» и вам нужно двоичное представление, вы можете сделать:

extension String {
    var binaryData: Data {
        let values = try! NSRegularExpression(pattern: "[01]{8}")
            .matches(in: self, range: NSRange(startIndex..., in: self))
            .compactMap { Range($0.range, in: self) }
            .compactMap { self[$0] }
            .compactMap { UInt8($0, radix: 2) }
        return Data(values)
    }
}

Таким образом

let input = "010000010100001001000011"
let data = input.binaryData               // 0x41 0x42 0x43

Затем вы можете записать этот Data в файл или сделать с ним все, что захотите.

...