【问题标题】:What is the difference between binary and ASCII based file comparison?二进制和基于 ASCII 的文件比较有什么区别?
【发布时间】:2016-02-11 01:26:27
【问题描述】:

如果我在 Windows 中使用像 fc 这样的文件比较工具,您可以在 ASCII 和二进制比较之间进行选择。

这两个比较之间的实际区别是什么?如果我比较两个ASCII文件,我不希望文件的二进制数据相同吗?

【问题讨论】:

  • 我没有足够的信心提交答案,但这可能与比较程序如何解释其比较中的换行符有关。
  • 这可能就是答案。来自fc 文档:/l : Compares the files in ASCII mode. Fc compares the two files line by line and attempts to resynchronize the files after finding a mismatch.
  • 是的,就是这样。 Linux 使用二进制 '\n' 作为换行符,windows 使用 '\r\n' .. 由于它们不同,二进制比较会失败,但将两者解释为“行尾”的逐行比较可能会成功。
  • 好吧,我想更一般地说,在二进制模式下,它对整个文件进行位比较,但在 ASCII 模式下,它进行逐行比较,解释换行符并可能忽略其他控制字符。

标签: binary ascii diff file-diffs


【解决方案1】:

警告:这是 5 岁时对大学知识的松散记忆

二进制表示意味着您可以精确地比较二进制,而 ascii 是数据类型的比较。简而言之,char 'A' 是 01000001 的表示形式,但这也是一个等于 '65' 的 8 位整数,因此这意味着二进制中的 A = 65。因此,如果您将 A + A 作为字符串和 65 43 65 (43 在二进制到十进制中是“+”),那么在二进制中它们将是等效的,但在 ascii 中它们不会。这是一个非常松散的解释,我敢肯定我错过了很多,但这应该概括一下。

在文本文件中您需要 ASCII,因为您使用 ascii 字符编写。也就是说,将程序状态保存到您希望二进制文件直接比较的文件。

【讨论】:

  • 但是两个相同的ASCII文件不也有相同的二进制数据吗?
  • 另一个例子,数字“0”在ASCII中表示为00110000,而“1”表示为00110001,而不是像二进制中的0000000000000001。因此,ascii 中的数字 10 将是 00110001 00110000,而不是二进制的 00001010。
猜你喜欢
  • 1970-01-01
  • 2014-09-17
  • 2016-02-14
  • 2016-05-17
  • 2011-12-02
  • 2015-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多