Swift 二进制文件的二进制值字符串

Swift 二进制文件的二进制值字符串,swift,binary,binaryfiles,Swift,Binary,Binaryfiles,我有一个大字符串,大约600字节的二进制位,需要保存到二进制文件中 如果我只是使用string.write将字符串保存到文件中,那么1和0将被编码为其Unicode/ASCII值 我需要它,这样,如果我用xxd-b打开文件,例如,它将输出与字符串中当前相同的二进制位 如何实现这一点?如果您有一个包含一系列“0”和“1”字符的字符串,并且需要二进制表示,则可以执行以下操作: extension String { var binaryData: Data { let valu

我有一个大字符串,大约600字节的二进制位,需要保存到二进制文件中

如果我只是使用string.write将字符串保存到文件中,那么1和0将被编码为其Unicode/ASCII值

我需要它,这样,如果我用xxd-b打开文件,例如,它将输出与字符串中当前相同的二进制位


如何实现这一点?

如果您有一个包含一系列“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)
    }
}
因此

然后,您可以将该数据写入文件,或对其执行任何操作。

为什么要使用0和1字符的字符串作为位,而不是像数据这样更合适的数据结构?
let input = "010000010100001001000011"
let data = input.binaryData               // 0x41 0x42 0x43