代码之家  ›  专栏  ›  技术社区  ›  Jeff

在VB.Net中从二进制文件中提取字符串

  •  1
  • Jeff  · 技术社区  · 16 年前

    我想从一些包含嵌入式SQL语句的二进制文本文件中提取字符串数据。我不需要任何花哨的清理——只需要一些方法来提取可读文本。我正在使用vb.net,但是调用外部实用程序也可以。

    4 回复  |  直到 16 年前
        2
  •  3
  •   Derrick Turk    16 年前

    从MinGW获取Win32的GNU binutils(包括字符串): http://sourceforge.net/projects/mingw/files/ .

        3
  •  1
  •   Abel    16 年前

     &8)JÓxZZ`\■£ÌS?E?L?E?C?T?*?F?R?O?M?m?y?T?b?l?§ıÍ4¢
    

    您很幸运,因为它很可能使用UTF-16或其他多字节编码。这些都是相当琐碎的认识。但在几乎所有其他情况下(UTF-8、ISO-8859-1、Windows-1252),几乎不可能区分单个字符是文本还是非文本,除非您知道某个“可读文本”如何开始以及如何结束。

    要点是:任何东西都是允许的,并且被认为是可读的文本。UTF-8、ASCII和Windows-1252甚至允许空字符(而有些编程语言不允许)。 Here's a thread 这给出了一个VB示例,说明了如何继续,它可能会给您一些提示。

    PS:分析这种类型的数据可能很困难,如果你能上传你的文件到某个地方,这样我们就可以看一看,这将非常有帮助。

        4
  •  0
  •   Jeff    16 年前

    谢谢大家。好主意。真的帮助我思考。到处都是选票。最后,我不需要非常确定它们是弦,所以我用了一种快速、草率、丑陋的方法。

     'strip out non-string characters 
     For Each b As Byte In byteArray
          If b = 9 Or b = 10 Or b = 13 Or (b > 31 And b < 127) Then
              newByteArray(i) = b.ToString
              i += 1
          End If
      Next
    
      'move it into a string
      resultString = System.Text.Encoding.ASCII.GetString(newByteArray)