【问题标题】:String of Binary Values to Binary File二进制值字符串到二进制文件
【发布时间】:2020-06-22 03:29:13
【问题描述】:

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

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

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

我怎样才能做到这一点?

【问题讨论】:

  • 为什么你使用字符串(“0”和“1”字符)作为位,而不是更合适的数据结构,如Data

标签: swift binary binaryfiles


【解决方案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 写入文件,或对它做任何您想做的事情。

【讨论】:

    猜你喜欢
    • 2011-02-28
    • 2016-08-30
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多