Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C二进制文件与文本文件的效率_C_File_Text_Binary - Fatal编程技术网

C二进制文件与文本文件的效率

C二进制文件与文本文件的效率,c,file,text,binary,C,File,Text,Binary,我是C语言的新手,我想得到一些帮助。 假设我只需要在一个文件中存储6位数字。(假设int的大小等于4) 使用文本文件或二进制文件(在内存方面)哪一种效率更高?我真的不知道如何面对这个问题,欢迎任何帮助二进制文件基本上就是任何不“面向行”的文件。除了实际写入的字符和换行符还有其他符号的任何文件 通常,当您以文本模式写入文件时,任何新行\n都将转换为回车+换行\r\n 与文本文件相比,使用二进制文件无法实现任何内存效率,文件存储在磁盘上,而不是内存中。这完全取决于您想对文件做什么,以及您希望如何格式

我是C语言的新手,我想得到一些帮助。 假设我只需要在一个文件中存储6位数字。(假设int的大小等于4)
使用文本文件或二进制文件(在内存方面)哪一种效率更高?我真的不知道如何面对这个问题,欢迎任何帮助

二进制文件基本上就是任何不“面向行”的文件。除了实际写入的字符和换行符还有其他符号的任何文件

通常,当您以文本模式写入文件时,任何新行
\n
都将转换为回车+换行
\r\n

与文本文件相比,使用二进制文件无法实现任何内存效率,文件存储在磁盘上,而不是内存中。这完全取决于您想对文件做什么,以及您希望如何格式化它

由于使用纯整数(无论
int
大小如何),使用文本或二进制文件将对性能产生相同的影响(这意味着选择使用哪种类型不会有任何区别)


如果以后要在文本编辑器中修改或读取文件,最好使用文本模式写入文件。

二进制文件基本上是任何不“面向行”的文件。除了实际写入的字符和换行符还有其他符号的任何文件

通常,当您以文本模式写入文件时,任何新行
\n
都将转换为回车+换行
\r\n

与文本文件相比,使用二进制文件无法实现任何内存效率,文件存储在磁盘上,而不是内存中。这完全取决于您想对文件做什么,以及您希望如何格式化它

由于使用纯整数(无论
int
大小如何),使用文本或二进制文件将对性能产生相同的影响(这意味着选择使用哪种类型不会有任何区别)


如果以后要在文本编辑器中修改或读取文件,最好使用文本模式写入文件。

大多数人将文件分为两类:二进制文件和ASCII(文本)文件。事实上,你已经和这两个人一起工作过了。您编写的任何程序(C/C++/Perl/HTML)几乎肯定都是ASCII文件

ASCII文件定义为由ASCII字符组成的文件。它通常是通过使用诸如emacs、pico、vi、Notepad等文本编辑器创建的。有一些更高级的编辑器用于编写代码,但它们可能并不总是将其保存为ASCII。ASCII是国际标准

计算机科学就是创造好的抽象概念。有时成功,有时失败。好的抽象都是关于呈现用户可以使用的世界视图。最成功的摘要之一是文本编辑器

当您编写程序并输入注释时,很难想象这些信息不是以字符形式存储的。ASCII/文本文件实际上存储为0和1

文件存储在磁盘上,磁盘以某种方式表示1和0。我们只称它们为1和0,因为这也是一种抽象。无论使用何种方式将0和1存储在磁盘上,只要我们可以这样想,我们都不在乎

实际上,ASCII文件基本上是二进制文件,因为它们存储二进制数。也就是说,ASCII文件存储0和1

ASCII文件和二进制文件之间的区别?

ASCII文件是存储ASCII代码的二进制文件。回想一下,ASCII码是存储在字节中的7位代码。更具体地说,有128种不同的ASCII码,这意味着只需要7位来表示ASCII字符

但是,由于最小可用大小为1字节,因此这7位是任何字节的低7位。最高有效位为0。这意味着,在任何ASCII文件中,都会浪费1/8的位。特别是,没有使用每个字节的最高有效位

虽然ASCII文件是二进制文件,但有些人将其视为不同类型的文件。我喜欢将ASCII文件视为特殊类型的二进制文件。它们是二进制文件,每个字节都用ASCII码写入

一个完整的、通用的二进制文件没有这样的限制。256位模式中的任何一个都可以在二进制文件的任何字节中使用

我们一直在处理二进制文件。可执行文件、对象文件、图像文件、声音文件和许多文件格式都是二进制文件。使它们成为二进制的仅仅是二进制文件的每个字节可以是256位模式中的一个。它们不限于ASCII码。 ASCII文件示例

假设您正在使用文本编辑器编辑文本文件。因为您使用的是文本编辑器,所以您几乎是在编辑ASCII文件。在这个全新的文件中,输入“cat”。也就是说,字母“c”,然后是“a”,然后是“t”。然后,保存文件并退出

会发生什么?目前,我们不会担心打开、修改和关闭文件意味着什么的机制。相反,我们关心的是ASCII编码

如果查找ASCII表,您将发现0x63、0x61、0x74的ASCII代码(0x仅表示值是十六进制的,而不是十进制/基数10)

每次键入并保存ASCII字符时,都会写入与该字符对应的整个字节。这包括标点、空格等

因此,当您键入“c”时,它将作为01100011保存到一个文件中

现在,有时文本编辑器会输入您可能不期望的字符。例如,一些编辑器“坚持”每行以换行符结尾

文件唯一可能在行尾缺少换行符的地方是最后一行。有些编辑器允许最后一行以新行以外的内容结尾
Here's how it looks:
ASCII   'c'        'a'          't'
Hex     63          61          74
Binary  0110 0011   0110 0001   0111 1000
11000011
63 a0 de