【问题标题】:Swift 3 Write String to binary fileSwift 3 将字符串写入二进制文件
【发布时间】:2017-04-02 12:56:55
【问题描述】:

如何将字符串写入二进制文件? 我尝试了很多,但每次我的文件都显示为纯文本文件..

我对 plist 文件不感兴趣..

            string = String(data: data, encoding: String.Encoding.utf8)!;
            var buffer = [UInt8](string.utf8);

            var f = fopen("newdata.dat", "w");
            let success = fwrite(buffer, MemoryLayout<UInt8>.size, buffer.count, f);
            fsync(fileno(f));
            fclose(f);
            print("success: \(success)");

【问题讨论】:

  • 可能this 回答可能对您有帮助吗?
  • data直接写入磁盘有什么问题?
  • @SB87 谢谢,但不幸的是我在发布问题之前已经尝试过了。我还指定我对 plist 文件不感兴趣..
  • @vadian 我只是想学点不一样的东西。
  • “0a000”与“ABCDEF”有什么关系?您希望这个字符串得到什么exact 结果? – 如果您打算编写数据的十六进制表示,请查看stackoverflow.com/questions/39075043/…

标签: swift


【解决方案1】:

你清楚数据和文本之间的区别吗?纯文本文件是由文本编辑器解释时显示为文本的数据。您是否希望看到零和一或一组数字(可能是十六进制)?或者,如果您尝试将 Word 文档作为纯文本打开,您会看到那种混乱的字符?如果是这样,那么您需要在 More Info 之类的应用中打开文件

或者,DIY 选项是查看字节缓冲区,但在文本编辑器中查看字节的唯一方法是将它们转换为字符串并保存,这将代表原始文件的值,但具有讽刺意味的是,不是文件本身(如果这有意义的话)。

【讨论】:

  • 请看我上面的cmets :)
  • 当您写入文件显示为纯文本文件时,您如何查看该文件以及如何加载它?任何文件,无论它是否是一种纯文本编码,都可以作为数据加载。它与您如何保存文件无关。直接保存到磁盘的纯文本文件与通过 Data 类或“二进制”文件保存的相同文件相同。所有文件都以二进制格式保存。我们之所以称某些文档为二进制文件,是因为它们编码复杂,无法在文本编辑器中以人类可读的方式进行解释。
  • 您的回答帮助我弄清楚我的代码出了什么问题。我现在可以得到我的预期结果。谢谢
  • 我很高兴它有帮助,我发现字节真的很令人困惑,并写了一个完整的 series of blogposts 来了解它们。它们可能有用,如果不是你,那么其他阅读本文的人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-28
  • 2021-10-27
  • 2016-01-15
  • 2012-09-22
  • 2016-10-03
  • 2010-10-15
  • 1970-01-01
相关资源
最近更新 更多