二进制值字符串到二进制文件

时间:2020-06-21 15:16:22

标签: swift binary binaryfiles

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

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

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

我该怎么做?

1 个答案:

答案 0 :(得分:1)

如果您的字符串包含一系列“ 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写入文件,或使用它进行任何操作。