编码和解码

编码

编码的原理

  • 编码将信息(如文本、图像、音频等)转换成计算机可以处理和存储的二进制格式(0和1)的过程。不同的编码方案定义了不同的信息转换规则:
  1. 字符编码:用于将字符转换为数字。常见的有:
    ASCII:美国信息交换标准代码,使用7位二进制编码表示128个字符。
    Unicode:通用字符集,包含全球大多数文字和符号。常见的实现包括UTF-8、UTF-16、UTF-32。
    GBK:中文字符编码,支持简体中文字符和一些常用的繁体中文字符。
    UTF-8:Unicode的一种编码方式,使用1到4个字节表示一个字符,向后兼容ASCII。
    编码过程就是根据这些规则,将每个字符转换成对应的数字(码点),再将这些码点转换成二进制格式。

除文本之外的数字、图片、音频、视频的常见编码

  1. 数字:
    定点数:将数字的每一位固定为二进制数表示。
    浮点数:用于表示非常大或非常小的数,例如IEEE 754标准。

  2. 图片:
    JPEG:一种有损压缩的图像编码格式,适用于照片和复杂图像。
    PNG:一种无损压缩的图像编码格式,适用于需要保留细节和透明度的图像。
    GIF:一种适用于简单动画和低色彩图片的格式。

  3. 音频:
    MP3:一种有损压缩音频格式,广泛用于音乐文件。
    WAV:一种无损音频格式,通常用于高质量音频。
    AAC:高级音频编码,比MP3更高效的压缩格式。

  4. 视频:
    H.264:一种常用的视频压缩标准,广泛应用于高清视频和网络视频。
    HEVC (H.265):一种新一代视频压缩标准,比H.264更高效。
    VP9:由Google开发的视频编码格式,用于YouTube等平台。
    AV1:一种开源、免版税的视频编码格式,由AOMedia开发,旨在取代VP9和H.264。
    这些编码方案的共同目标是以最有效的方式存储和传输数据,同时尽量减少质量损失(对于有损编码)或完全保留原始信息(对于无损编码)。

解码

解码是编码的逆过程,即将二进制数据转换回原始信息的过程。每种编码都有相应的解码规则解码器按照这些规则将二进制数据转换回文本、图像、音频或视频。以下是不同类型数据的解码原理:

  1. 字符解码
    字符解码的过程是将二进制数据转换回字符。解码器根据编码标准(如UTF-8、GBK等)将二进制数据映射回相应的字符。
  • UTF-8解码:读取二进制数据中的每一个字节,根据UTF-8编码规则识别字符的开始字节和后续字节,组合成完整的Unicode字符。
  • GBK解码:读取二进制数据中的每两个字节,查找GBK编码表,将其转换为相应的中文字符。
  1. 数字解码
    数字解码的过程是将二进制数据转换回数值。解码器根据定点数或浮点数编码规则,将二进制数据映射为十进制数。
  • 定点数解码:直接将二进制数转换为十进制数。
  • 浮点数解码:根据IEEE 754标准,将二进制数据中的符号位、指数位和尾数位组合,计算出浮点数值。
  1. 图像解码
    图像解码的过程是将二进制数据转换回图像。解码器根据图像编码格式(如JPEG、PNG、GIF)解析二进制数据,恢复图像像素。
  • JPEG解码:使用逆离散余弦变换(IDCT)和逆量化,将压缩的二进制数据恢复为图像像素。
  • PNG解码:使用无损解压缩算法(如DEFLATE),将二进制数据恢复为图像像素。
  • GIF解码:解析二进制数据中的图像块,恢复动画帧和调色板。
  1. 音频解码
    音频解码的过程是将二进制数据转换回声音波形。解码器根据音频编码格式(如MP3、WAV、AAC)解析二进制数据,恢复音频信号。
  • MP3解码:使用逆离散余弦变换(IMDCT)和逆量化,将压缩的二进制数据恢复为音频波形。
  • WAV解码:直接读取无损音频数据,将二进制数据转换为音频波形。
  • AAC解码:使用高级音频解码算法,将压缩的二进制数据恢复为音频波形。
  1. 视频解码
    视频解码的过程是将二进制数据转换回视频帧。解码器根据视频编码格式(如H.264、HEVC、VP9)解析二进制数据,恢复视频帧。
  • H.264解码:使用逆变换、去块效应滤波和运动补偿等技术,将压缩的二进制数据恢复为视频帧。
  • HEVC解码:使用更高效的逆变换和去块效应滤波,将压缩的二进制数据恢复为视频帧。
  • VP9解码:解析二进制数据中的视频块,恢复视频帧。

通过解码,计算机可以将存储和传输的二进制数据转换回人类可以理解的文本、图像、音频和视频。

参考:

数制和码制

信息(文字、图像、音频、视频等)在计算机中是如何存储及显示的

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

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

相关文章

WPF 解决: DataGrid 已定义列,但是还是会显示模型的所有属性的问题

AutoGenerateColumns 属性 AutoGenerateColumns:这个属性决定 DataGrid 是否根据数据源中的属性自动生成列。如果设置为 true,DataGrid 会根据数据源中的属性自动生成列。如果设置为 false,则 DataGrid 不会自动生成列,开发者需要…

Mysql-查询

1.基本查询 //查询所有内容 select * from 表名;//查询指定字段 select 字段1,字段2,字段3.....from 表名;//查询时给字段起别名 select 字段1 as 别名1 , 字段2 as 别名2 ... from 表名;//去重查询 select distinct 字段列表 from 表名; …

假设我写了一段C++循环代码,我希望对这段代码做 profiling,计算出每次循环需要消耗的指令 cycle 数。我应该如何实现这种 profiling?

为了对你编写的C循环代码进行profile并计算每次循环消耗的指令周期数,可以采用以下步骤: 使用硬件性能计数器 使用 rdtsc 指令 rdtsc(读时间戳计数器)指令可以返回一个64位时间戳计数器的值,这个计数器从系统启动时开…

解决显存不足问题:深度学习中的 Batch Size 调整【模型训练】

解决显存不足问题:深度学习中的 Batch Size 调整 在深度学习训练中,显存不足是一个常见的问题,特别是在笔记本等显存有限的设备上。本文将解释什么是 Batch Size,为什么调整 Batch Size 可以缓解显存不足的问题,以及调…

杰发科技AC7840——SENT数据解析及软件Sent发送的实现

0. 测试环境 AC7840官方Demo板; 图莫斯0503 DSlogic U2Basic 使用引脚 输出脚:PB1 时钟:PB2,其他引脚可以不初始化,不接线 1. 数据解析 以下是SENT数据的格式(1tick以3us为例)&#…

watch和watchEffect的区别

废话不多说&#xff0c;先看两者代码&#xff1a; <template><div><h1>watchs</h1><div>{{ countRef }} - {{ name }} - {{ age }}</div></div> </template><script> import { ref, watch } from vue export default {…

数据库中的事务

一、理解事务 1、本质 事务由一组DML语句组成&#xff0c;这一组语句要么全部成功&#xff0c;要么全部失败。在逻辑上&#xff0c;事务就是一组sql语句&#xff0c;但在实际中&#xff0c;公共的数据库一定会高并发地接受各种事务的请求&#xff0c;所以一个事务要有4个属性…

WEB开发-HTTP认证

1 需求 2 接口 3 示例 HTTP Authentication&#xff08;HTTP认证&#xff09;是Web服务器用来验证客户端请求的一种机制。它通常用于保护需要用户凭据&#xff08;如用户名和密码&#xff09;才能访问的资源。HTTP认证有几种不同的分类或方法&#xff0c;以下是其中一些主要的分…

java 中stream.map()和stream.reduce()

stream.map 和 stream.reduce 是 Java Stream API 中的两个不同操作&#xff0c;用于对流中的元素进行转换和聚合。它们在功能和用途上有很大的区别。 stream.map map 方法用于将流中的每个元素应用一个函数&#xff0c;并返回一个包含应用该函数后的新元素的流。它通常用于将…

国内访问Docker Hub慢问题解决方法

在国内访问Docker Hub时可能会遇到一些困难&#xff0c;但幸运的是&#xff0c;有多种解决方案可以帮助你顺利下载Docker镜像。以下是一些有效的解决方案&#xff1a; 配置Docker镜像源&#xff1a;你可以通过配置Docker的daemon.json文件来使用国内镜像源&#xff0c;比如DaoC…

SpringCloud极限速通版

1.SpringCloud概述 1.1 什么是微服务 1.1.1 单体架构 业务所有功能都打包在一个war包或jar包&#xff0c;这种方式就是单体架构&#xff0c;单体架构的应用就是单体应用。这种架构开发简单&#xff0c;部署简单&#xff0c;一个项目包含所有功能&#xff1b;省去了多个项目之…

【学习笔记】无人机系统(UAS)的连接、识别和跟踪(七)-广播远程识别码(Broadcast Remote ID)

目录 引言 5.5 广播远程识别码&#xff08;Broadcast Remote ID&#xff09; 5.5.1 使用PC5的广播远程识别码 5.5.2 使用MBS的广播远程识别码 引言 3GPP TS 23.256 技术规范&#xff0c;主要定义了3GPP系统对无人机&#xff08;UAV&#xff09;的连接性、身份识别、跟踪及…

来自Transformers的双向编码器表示(BERT) 通俗解释

来自Transformers的双向编码器表示&#xff08;BERT&#xff09; 目录 1. 从上下文无关到上下文敏感2. 从特定于任务到不可知任务3. BERT&#xff1a;把两个最好的结合起来4. BERT的输入表示5. 掩蔽语言模型&#xff08;Masked Language Modeling&#xff09;6. 下一句预测&am…

Sui主网升级至V1.28.4版本

Sui主网现已升级至V1.28.4版本&#xff0c;同时Sui协议升级至51版本。其他升级要点如下所示&#xff1a; #18536 将所有可能的connect_lazy错误推迟到请求时间处理。 #18206 明确将每轮领导者人数设置为1&#xff0c;以支持Mysticeti提交。 #17868 引入新功能标志和协议配…

html 特效 学习 日志 2024/7/21 23:58

一.女友相册 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>女友相册html代码</title><s…

MyBatis:高级标签使用技巧的详细指南

请关注微信公众号&#xff1a;拾荒的小海螺 博客地址&#xff1a;http://lsk-ww.cn/ 1、简述 MyBatis 是一个优秀的持久层框架&#xff0c;提供了简单和灵活的 SQL 映射功能。除了基础的查询、插入、更新和删除操作外&#xff0c;MyBatis 还提供了一些高级标签&#xff0c;帮…

SQL 简单查询

目录 一、投影查询 1、指定特定列查询 2、修改返回列名查询 3、计算值查询 二、选择查询 1、使用关系表达式 2、使用逻辑表达式 3、使用 BETWEEN关键字 4、使用 IN关键字 5、使用 LIKE关键字 6、使用 IS NULL/ NOT NULL关键字 7、符合条件查询 三、聚合函数查询 一…

Docker_一刀流_好用、好玩还方便_(持续更新)

Docker 简介一、镜像和容器的概念镜像&#xff08;Image&#xff09;容器&#xff08;Container&#xff09;镜像和容器的关系 宿主机二、Dockerfile2.1 什么是Dockerfile2.2 Dockerfile中的常见指令2.3Dockerfile实例2.4 详细扩展 三、镜像3.1 镜像的创建3.2对于镜像的一些常用…

知识表示 | 利用 Protégé 软件构建小型本体

Hi&#xff0c;大家好&#xff0c;我是半亩花海。本项目旨在利用 Protg 软件构建小型本体&#xff0c;探索本体建模的实际应用&#xff0c;特别是应用本体与上层本体之间的关系继承与映射。我们将重点理解应用本体如何继承上层本体的关系&#xff0c;以及如何通过推理机制揭示实…

一起搭WPF界面之MVVM架构的简单搭建

一起搭WPF界面之MVVM架构的简单搭建 1 前言2 创建项目2.1新建项目2.2WPF2.3创建完成 3 MVVM划分3.1 划分逻辑3.2文件夹创建3.3文件创建3.3.1 Views——可在主界面的基础上&#xff0c;划分多个用户控件模块3.3.2 ViewModels——创建数据结构存放的cs文件3.3.3 Models——创建处…