【问题标题】:NSData to NSString losing dataNSData 到 NSString 丢失数据
【发布时间】:2015-05-21 00:03:01
【问题描述】:

我正在尝试将二进制文件转换为文本,问题是文件的很大一部分没有以 ascii 编码,最终成为特殊字符。我正在使用

[[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];

但我只在 20000 字节的数据块中返回几个字符。我希望能够看到的是所有文本(即使大部分都是废话),这是我使用二进制编辑器打开文件时得到的。

【问题讨论】:

  • 传递正确的编码?这听起来像是一个 XY 问题。你到底想对字符串做什么?
  • 整个文件并没有真正的“正确编码”。在二进制编辑器中文件are readable with UTF8 or Ascii 的一部分,但是当我使用 NSString 方法进行 UTF8 或 ascii 编码时,我得到的数据很少或没有。我希望能够查看所有角色以执行一些正则表达式并提取有意义的部分。

标签: nsstring ascii nsdata nsstringencoding


【解决方案1】:

这是一个二进制文件。要阅读它,您可以找到文件格式的文档,然后解析它。试图将其全部放入 NSString* 似乎毫无意义。

【讨论】:

  • 在逆向工程中有应用,这就是存在十六进制查看器的原因。有没有办法查看文件内容,like this binary editor showing the file in UTF8 encoding?
  • 当然。您将使用每个 8 位字符都有效的编码。 NSASCIIStringEncoding 不是这样的编码。 UTF-8 没有这样的编码。 MacRoman 或 Windows1252 都可以。
  • 是的,使用任意 8 位编码就可以了。另一种选择是逐个字符循环,使用您定义的表进行翻译。相当容易做到——困难的部分是定义表格。 (顺便说一句,Windows1252 似乎与上图中显示的内容相匹配。)
猜你喜欢
  • 2011-03-02
  • 1970-01-01
  • 1970-01-01
  • 2012-12-14
  • 2023-03-20
  • 2012-01-17
  • 2011-08-31
  • 1970-01-01
  • 2011-05-07
相关资源
最近更新 更多