我只是想确保我明白一些事情。
如果我的理解是正确的,那么计算机上的所有内容都以二进制形式保存,这意味着它全部保存为一系列的比特,即1和0。 “二进制文件”以这种方式保存,文本文件也是如此。
从技术上讲,二进制文件和文本文件是相同的:它们都是一系列的。根据一些编码,唯一的区别是文本文件应该由一个知道如何执行此操作的程序解析并转换为一系列字符。因此,例如.txt
文件只是一个二进制文件 - 一系列位 - 但是像记事本这样的文字处理器知道如何将每个字节转换为您在屏幕上看到的字符。
这就完全不同了。我是对的吗?
另外,使用'二进制形式'比使用'文本形式'更有效的原因是因为在文本中,每个字符被编码为一个字节,即8位,而在'二进制形式'中每个字节可以有一个完整的含义,你不需要浪费一些字节只是为了说最简单的事情。这是对的吗?
答案 0 :(得分:-1)
注意::让我们保留多字节字符集以便于理解。
注意:考虑使用文本文件使用ASCII的Unix(为简便起见,不考虑其他编码)
让我们了解字符串和字符数组之间的区别
在8 bits
字节中,如果 unsigned ,我们可以存储0 to 255
,如果 signed
-128 to +127
作为一个整体,如果我们看到一个字节(8 bits
),则可以容纳的字节值为-128 to 255
(范围)。 ASCII字符(0 to 127
)的范围。
给出字符数组a[10]
,如果任何字节a[0] to a[9]
的值超出ASCII字符范围,则它不是 string ,它只是字符数组。如果所有字节都在ASCII范围(0 to 127
)内,则为 string 。
概括来说,字符数组的范围可以是(-128 to 255
)中的任何一个。
这里重要的结论是,因为ASCII范围(0 to 127
)是-128 to 255
的适当子集,所有字符串都可以称为字符数组。
现在让我们将以上定义应用于 binary 文件与文本文件。
如果文件中的所有字节均在ASCII(0 to 127
)范围内,则应将其称为文本文件。
如果其中任何一个超出此范围,即(-128 to -1
或(128 to 255
)中的任何一个,则它是一个 binary 文件。
总而言之,由于ASCII范围0 to 127
是(-128 to 255
)的适当子集,所以所有文本文件都是二进制文件。
如果文件距离(-128 to -1
或(128 to 255
)至少有一个字节,则它不能是仅文本文件的二进制文件。
如果任何ASCII范围字符具有特殊处理,我尚未验证标准。但总而言之,我认为我已经清楚了文本文件与二进制文件的区别。
希望这会有所帮助
答案 1 :(得分:-2)
二进制存储单字节0-255(8位) 文本模式将105存储为3个字符的集合(每个字符为1字节,ASCII格式)'1','0','5'。
您可以打开文本文件并查看“105”,但105的二进制文件无法识别,并且更便于机器阅读。
还有其他差异,但这是重点。