信息,就是位+上下文什么是文本文件和二进制文件

信息,就是位+上下文

  • 计算机系统是由硬件和软件系统组成的,它们共同工作来运行应用程序

hello.c

#include <stdio.h>int main(){printf("Hello World~");return 0;
}

hello程序的生命周期是从一个源程序(或者说源文件)开始的,即程序员通过编辑器创建并保存的文本文件,文件名是hello.c。源程序实际上就是一个由值0和1组成的位(比特)序列,8个位组成一个字节。每个字节表示程序中的某些文本字符。

1字节(Byte)=8比特(bit)
1B = 8b

大部分现代计算机系统都是用ascll标准来表示文本字符,用一个惟一的单字节大小的整数值来表示每个字符。
在这里插入图片描述
ASCLL码表


hello.c程序是以字节序列的方式存储在文件中的。每个二进制的字节对应着一个十进制的整数,也对应着某个相对应的字符。像hello.c这种只由ASCLL字符构成的文件称为文本文件,所有其他文件统称为二进制文件。


hello.c的表示方法说明了一个基本思想:
系统中所有的信息,包括磁盘文件、内存中的程序、内存中存放的用户数据 以及 网络上传送的数据,都是由一串比特(位)表示的。

区分不同数据对象的唯一方法是读到这些数据对象时的上下文。 比如,在不同的上下文中,一个同样的字节序列可能表示一个整数、浮点数、字符串或者机器指令。

假设有一个字节序列 “01000001 01000010 01000011”。
如果在处理文本的上下文中,这可能被解释为字符串 “ABC”,因为在 ASCII 编码中,“01000001” 代表字符 “A”,“01000010” 代表字符 “B”,“01000011” 代表字符 “C”。
如果在处理整数的上下文中,假设这是一个小端序的整数表示,把这三个字节看作一个 24 位的整数,那么这个序列可能表示整数 16849987(二进制为 010000010100001001000011)。
如果在处理机器指令的上下文中,这三个字节可能对应特定的机器指令操作码和操作数,具体含义取决于特定的处理器架构和指令集。

什么是文本文件和二进制文件

简单区分

区分文本文件和二进制文件可以通过以下几个简单的方法:

  1. 文件扩展名
  • 文本文件:通常使用 .txt.c.cpp.py.java 等扩展名。
  • 二进制文件:通常使用 .exe.bin.jpg.mp3.pdf 等扩展名。
  1. 打开方式
  • 文本文件:可以使用任何文本编辑器(如记事本、VS Code、Sublime Text)打开,内容通常是可读的文本。
  • 二进制文件:使用文本编辑器打开时,内容通常是乱码或不可读的字符,需要使用特定的软件(如图片查看器、音频播放器、PDF阅读器)来打开。
  1. 文件内容
  • 文本文件:内容由可打印的字符组成,通常包含字母、数字、符号等。
  • 二进制文件:内容由二进制数据组成,可能包含不可打印的字符和控制字符。
  1. 文件大小
  • 文本文件:通常文件大小较小,因为文本文件只包含字符数据。
  • 二进制文件:文件大小可能较大,因为二进制文件可能包含图像、音频、视频等多媒体数据。
  1. 编辑方式
  • 文本文件:可以直接编辑和修改,修改后通常不会影响文件的结构。
  • 二进制文件:直接编辑可能会破坏文件的结构,导致文件无法正常使用。

示例
假设你有一个文件 example.txt 和一个文件 example.jpg

  • example.txt

    • 扩展名是 .txt,通常是文本文件。
    • 使用记事本打开,内容是可读的文本。
    • 文件大小较小。
  • example.jpg

    • 扩展名是 .jpg,通常是二进制文件。
    • 使用记事本打开,内容是乱码。
    • 文件大小可能较大。

总结
通过文件扩展名、打开方式、文件内容、文件大小和编辑方式,可以简单地区分文本文件和二进制文件。文本文件通常是可读的、可编辑的,而二进制文件通常需要特定的软件来打开和处理。

从二者本质上去区分

从本质上区分文本文件和二进制文件,我们需要深入理解它们在计算机中的存储方式和数据表示方式。

  1. 数据表示方式
  • 文本文件

    • 文本文件中的数据是以字符编码的形式存储的,如ASCII、UTF-8、UTF-16等。
    • 每个字符对应一个或多个字节(取决于编码方式),字符是人类可读的。
    • 文本文件中的数据可以直接通过字符编码表(如ASCII表)转换为人类可读的字符。
  • 二进制文件

    • 二进制文件中的数据是以二进制形式存储的,即0和1的序列。
    • 数据不一定是人类可读的,可能包含图像、音频、视频、可执行程序等。
    • 二进制文件中的数据通常需要特定的软件或程序来解析和处理。
  1. 文件结构
  • 文本文件

    • 文本文件通常有简单的结构,如行、段落等。
    • 文本文件中的数据可以逐行读取和处理。
    • 文本文件的结构相对简单,易于解析。
  • 二进制文件

    • 二进制文件的结构通常更为复杂,可能包含多个数据块、元数据、校验和等。
    • 二进制文件的结构需要特定的格式规范(如JPEG、MP3、EXE文件格式)来解析。
    • 二进制文件的结构复杂,解析难度较大。
  1. 数据处理方式
  • 文本文件

    • 文本文件的数据可以直接通过字符串操作进行处理,如查找、替换、分割等。
    • 文本文件的数据处理通常涉及字符编码的转换。
  • 二进制文件

    • 二进制文件的数据处理通常涉及位操作、字节操作等。
    • 二进制文件的数据处理需要了解文件的格式和结构,通常需要编写专门的解析程序。
  1. 示例
  • 文本文件示例

    • 文件内容:Hello, World!
    • 存储形式:在UTF-8编码下,每个字符占用1个字节,总共13个字节。
    • 数据表示:48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21(十六进制表示)
  • 二进制文件示例

    • 文件内容:一个简单的JPEG图像
    • 存储形式:包含图像数据、元数据、压缩算法等信息。
    • 数据表示:FF D8 FF E0 00 10 4A 46 49 46 00 01 ...(十六进制表示)
    • 数据解析:需要了解JPEG文件格式,才能正确解析图像数据。

总结
从本质上区分文本文件和二进制文件,关键在于它们的数据表示方式、文件结构和数据处理方式。文本文件以字符编码的形式存储,结构简单,易于处理;而二进制文件以二进制形式存储,结构复杂,需要特定的解析程序来处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/432850.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

相机、镜头参数详解以及相关计算公式

一、工业相机参数 1、分辨率 相机每次采集图像的像素点数&#xff0c;也是指这个相机总共有多少个感光晶片。在采集图像时&#xff0c;相机的分辨率对检测精度有很大的影响&#xff0c;在对同样打的视场成像时&#xff0c;分辨率越高&#xff0c;对细节的展示越明显。 相机像素…

RabbitMQ常用管理命令及管理后台

RabbitMQ管理命令 1、用户管理1.1、新增一个用户1.2、查看当前用户列表1.3、设置用户角色1.4、设置用户权限1.5、查看用户权限 2、RabbitMQ的web管理后台2.1、查看rabbitmq 的插件列表2.2、启用插件2.3、禁用插件2.4、访问RabbitMQ的web后台2.4、通过web页面新建虚拟主机 ./rab…

Html jquery下拉select美化插件——selectFilter.js

1. Html jquery下拉select美化插件——selectFilter.js jQuery是一个广泛使用的JavaScript库&#xff0c;它简化了DOM操作、事件处理、动画以及Ajax交互&#xff0c;使得开发者能更高效地构建交互式网页。在本案例中&#xff0c;jquery.selectlist.js插件正是基于jQuery构建的&…

7款国内AI搜索引擎大全网站

与传统搜索引擎相比&#xff0c;AI搜索引擎利用先进的自然语言处理、机器学习和深度学习技术&#xff0c;提供更加精准和个性化的搜索服务。小编就来和大家分享国内免费的AI搜索引擎网站&#xff0c;方便大家体验使用。 AI搜索引擎网站大全&#xff1a;https://www.bgrdh.com/f…

基于Node.js+Express+MySQL+VUE实现的计算机毕业设计旅游推荐网站

猜你喜欢评论 登录注册搜索 推荐定制景点/springboot/javaWEB/J2EE/MYSQL数据库/vue前后分离小程序 功能图如下所示&#xff1a; 一、设计目标 本次计算机毕业设计项目的主要目标是设计和开发一款功能完善、用户友好的旅游推荐网站。该网站旨在为广大旅游爱好者提供一个便捷、…

Mac 电脑配置yolov8运行环境实现目标追踪、计数、画出轨迹、多线程

&#x1f947; 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 &#x1f389; 声明: 作为全网 AI 领域 干货最多的博主之一&#xff0c;❤️ 不负光阴不负卿 ❤️ 文章目录 &#x1f4d9; Mac 电脑 配置 yolov8 环境&#x1f4d9; 代码运行推理测试模型训…

[Redis][哨兵][上]详细讲解

目录 0.前言1.基本概念1.相关名词解释2.主从复制的问题3.人工恢复主节点故障4.哨兵自动恢复主节点故障 0.前言 说明&#xff1a;该章节相关操作不需要记忆&#xff0c;理解流程和原理即可&#xff0c;用的时候能自主查到即可Redis的主从复制模式下&#xff0c;⼀旦主节点由于故…

opencv实战项目二十七:基于meanshif的视频脸部跟踪

文章目录 前言一、Mean Shift是什么&#xff1f;二、opencv中meanshift使用流程三、使用代码&#xff1a;四、效果&#xff1a; 前言 在当今这个信息化时代&#xff0c;图像和视频处理技术已经渗透到我们生活的方方面面&#xff0c;从安防监控、智能交通到人机交互等领域&…

如何恢复被删除的 GitLab 项目?

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…

MYSQL求月份同比数据和环比数据

1.需求题目如下 1.首先求出每月每个account_id 对应的amount金额 2.利用表自关联&#xff0c;获取上月&#xff0c;上年对应月份及金额&#xff0c; 关联条件利用 主表月份-1个月上月月份 和 主表月份-1年上年月份 3.最后求同比和环比 附代码及测试数据 CREATE TABLE transa…

Go基础学习06-Golang标准库container/list(双向链表)深入讲解;延迟初始化技术;Element;List;Ring

基础介绍 单向链表中的每个节点包含数据和指向下一个节点的指针。其特点是每个节点只知道下一个节点的位置&#xff0c;使得数据只能单向遍历。 示意图如下&#xff1a; 双向链表中的每个节点都包含指向前一个节点和后一个节点的指针。这使得在双向链表中可以从前向后或从后…

皮肤病检测-目标检测数据集(包括VOC格式、YOLO格式)

皮肤病检测-目标检测数据集&#xff08;包括VOC格式、YOLO格式 数据集&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1XNTo-HsBCHJp2UA-dpn5Og?pwdlizo 提取码&#xff1a;lizo 数据集信息介绍&#xff1a; 共有 2025 张图像和一一对应的标注文件 标注文件格式提供…

说说海外云手机的自动化功能

在全球社交媒体营销中&#xff0c;通过自动化功能&#xff0c;企业不再需要耗费大量时间和精力手动监控和操作每台设备。这意味着&#xff0c;企业可以显著提升效率、节省成本&#xff0c;同时减少对人力资源的依赖。那么&#xff0c;海外云手机的自动化功能具体能带来哪些优势…

Eclipse Memory Analyzer (MAT)提示No java virtual machine was found ...解决办法

1&#xff0c;下载mat后安装&#xff0c;打开时提示 jdk版本低&#xff0c;需要升级到jdk17及以上版本&#xff0c;无奈就下载了jdk17&#xff0c;结果安装后提示没有jre环境&#xff0c;然后手动生成jre目录&#xff0c;命令如下&#xff1a; 进入jdk17目录&#xff1a;执行&…

基于Springboot+微信小程序 的高校社团管理小程序(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

使用Postman搞定各种接口token实战

现在许多项目都使用jwt来实现用户登录和数据权限&#xff0c;校验过用户的用户名和密码后&#xff0c;会向用户响应一段经过加密的token&#xff0c;在这段token中可能储存了数据权限等&#xff0c;在后期的访问中&#xff0c;需要携带这段token&#xff0c;后台解析这段token才…

视频单目标跟踪研究

由于对视频单目标跟踪并不是很熟悉&#xff0c;所以首先得对该领域有个大致的了解。 视频目标跟踪是计算机视觉领域重要的基础性研究问题之一&#xff0c;是指在视频序列第一帧指定目标 后&#xff0c;在后续帧持续跟踪目标&#xff0c;即利用边界框&#xff08;通常用矩形框表…

解决sortablejs+el-table表格内限制回撤和拖拽回撤失败问题

应用场景&#xff1a; table内同一类型可拖拽&#xff0c;不支持不同类型拖拽&#xff08;主演可拖拽交换位置&#xff0c;非主演和主演不可交换位置&#xff09;,类型不同拖拽效果需还原&#xff0c;试了好几次el-table数据更新了&#xff0c;但是表格样式和数据不能及时保持…

ArrayList源码实现(一)

ArrayList源码实现&#xff08;一&#xff09; 1. ArrayList的大小是如何自动增加的&#xff1f; 初始化 在构造函数中&#xff0c;可以设定列表的初始值大小&#xff0c;如果没有的话默认使用&#xff0c;提供的静态数据 public ArrayList(int initialCapacity) {if (initi…

RabbitMQ应用

RabbitMQ 共提供了7种⼯作模式, 进⾏消息传递 一、七种模式的概述 1、Simple(简单模式) P&#xff1a;生产者&#xff0c;就是发送消息的程序 C&#xff1a;消费者&#xff0c;就是接收消息的程序 Queue&#xff1a;消息队列&#xff0c;类似⼀个邮箱, 可以缓存消息; ⽣产者…