<p>二进制文件的工作原理</p>
<p><strong>几乎所有</strong>计算机和网络流或<strong>文件都是二进制的</strong>,即0或1位(只有少数可能是量子位)。它们可以串行或并行方式移动或存储。最初很容易使用“<strong>by</strong>eigh<strong>t<em>e</em>s</strong>”来描述8位(通常是并行的),并将其显示为两个十六进制字符(每个字符都是半字节)。现代计算机倾向于以并行方式传输64位数据,但我们坚持更容易建立的旧约定</p>
<p><strong>一个有效的PDF必须以一个“标题”开头,即<strong>0010010101010000100010001000101101</strong>这是它的40位二进制签名,在Adobes 2008标准定义中,它被描述为8位注释的一部分,然后还指示版本号</p>
<p>Adobe和其他PDF阅读器允许使用某些PDF,如果数字签名(包括终端行馈送)位于前1K块(8192位或1024字节)的某个位置,那么这些文件(签名不是直接在开始处)现在应该被重写为无效</p>
当我们将二进制转换为人类术语时,我们将字节视为光学字符,因此当翻译时,这40位的5字节看起来像^ {CD1>},并且您的视图显示,作为二进制二进制符号后面的“B”,后面是%PDF1.4,那么\R(表示“强> R< /强>打印机机架”)和\n。(表示将纸张向上移动以形成一条<strong>N</strong>ewline,人类的感知再次表示我们向下移动页面!)</p>
<p>在另一种表示法中,这些\r\n被显示为CR LF(通常是dos/windows结构),它们有时也被显示在<strong>\</strong>he<strong>x</strong><em>idecimal</em>中,作为一个16位的“单词”0D0A,在python语言中可以显示为\x0d\x0a,但实际上它们是二进制文件00001101010,不利于人类</p>
<p>经过一段时间后,你可以识别和阅读不同类型的人类速记,因为阅读二进制文件将有点太难了</p>
<p>所以一个PDF可以用7位ASCII纯文本写,比如说记事本,但是这些字符被移动为64位,存储为8位字节,这实际上是二进制的,但是我们把这些文件描述为非二进制的,因为它们只有几个8位字符!!困惑吗</p>
<p><strong>以后编辑</strong>
如果我们看一下您的PDF标题,我们会看到这个结构,第19个<strong>obj</strong>ect按编号放置在第一个位置),您发现它是线性化的<a href="https://www.pdftron.com/blog/pdf-format/what-is-pdf-linearization/" rel="nofollow noreferrer">This information is then web served as sequential content "chunks" of PDF binary.</a>
因此,我们可以非常肯定地说,该文件被归类为“二进制文件”(但所有打印输出文件都是actu<strong>all</strong>y二进制文件:-)</p>
<pre><code>%PDF-1.4
%âãÏÓ
19 0 obj
<<
/Linearized 1
/L 60759
/H [ 1325 184 ]
/O 21
/E 58759
/N 1
/T 60252
>>
endobj
</code></pre>
<p>短标题几乎没有透露文件的信息。接下来的几个对象为我们提供了有关页面大小或编辑器历史记录的大部分信息。然而,我会冒险猜测,这是一个猜测,低水平的数字表明在页面上几乎没有对象,因此它很可能是一个页面的图片文本,因此不是文本</p>