常见的编码技术简介

常见的编码技术简介

文章目录

  • 常见的编码技术简介
    • 1. 字符编码
      • 1.1 ASCII
      • 1.2 Unicode
    • 2. 数据传输编码
      • 2.1 Base系列编码
        • 2.1.1 Base64
        • 2.1.2 Base16
        • 2.1.3 Base32
        • 2.1.4 Base85
        • 2.1.5 其他Base编码
      • 2.2 URL编码
      • 2.3 JSON
      • 2.4 XML
      • 2.5 Protobuf (Protocol Buffers)

1. 字符编码

1.1 ASCII

ASCII(American Standard Code for Information Interchange),是基于7位二进制数的字符编码标准。包括128个字符,每个字符都对应一个0到127之间的数字。

1.2 Unicode

一种全球通用的字符编码标准,支持几乎所有语言的字符。常见的Unicode实现包括UTF-8、UTF-16和UTF-32。

  • UTF-8:可变长度的字符编码,使用1到4个字节编码所有的Unicode字符。兼容ASCII,广泛用于网页和文档中。
  • UTF-16:使用2或4个字节编码所有的Unicode字符。
  • UTF-32:使用4个字节编码所有的Unicode字符。

字符串:hello你好!
Unicode(UTF-8)编码:hello\u4f60\u597d!

2. 数据传输编码

2.1 Base系列编码

2.1.1 Base64

Base64是一种使用 64 个字符(A-Z,a-z,0-9,+ 和 /)来表示二进制数据的编码方法。

效率:每 3 个字节编码为 4 个字符,数据膨胀为原来的 4/3 倍(约 1.33 倍)

应用场景:电子邮件附件的编码(MIME)、在URL中嵌入二进制数据、数据库中的二进制数据存储、XML/JSON等二进制

字符串:hello你好!
Base64:aGVsbG/kvaDlpb0h

2.1.2 Base16

Base16是一种使用 16 个字符(0-9, A-F)来表示二进制数据的编码方法。

效率:每个字节(8 位)用两个字符表示,数据膨胀为原来的 2 倍

应用场景:数字签名、哈希值等的表示、调试和诊断工具中用于显示二进制数据、URL编码

字符串:hello你好!
Base16:68656C6C6FE4BDA0E5A5BD21

2.1.3 Base32

Base16是一种使用 32 个字符(A-Z, 2-7)来表示二进制数据的编码方法。

效率:每 5 个字节编码为 8 个字符,数据膨胀为原来的 1.6 倍

应用场景:电子邮件地址的校验、密钥和令牌的编码、一次性密码(OTP)

2.1.4 Base85

Base85是一种使用 85 个字符(0-9,A-Z,a-z,$% ()*+,-./:;?@ []^_`{|}~)来表示二进制数据的编码方法。

效率:每 4 个字节编码为 5 个字符,数据膨胀为原来的 5/4 倍(约 1.25 倍)

应用场景:Adobe的PostScript和PDF,git编码patch文件

2.1.5 其他Base编码

Base36: 数字0-9,A-Z 或 a-z
Base58: 123456789 ABCDEFGHJKLMNPQRSTUVWXYZ abcdefghijkmnopqrstuvwxyz (去掉 数字0 大写字母I和O 小写字母l)
Base62: 数字0-9,A-Z,a-z
Base91: 0x21-0x7E (去掉 0x27 0x2D 0x5C)

2.2 URL编码

URL编码,用于在URL中传输特殊字符。特殊字符被替换为%加上两位十六进制数字。例如,空格被编码为%20,&符号被编码为%26

字符串:hello你好!
URL编码:hello%E4%BD%A0%E5%A5%BD%21

2.3 JSON

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人和机器阅读和编写。

{"message": "hello你好!"
}

2.4 XML

一种标记语言,常用于配置文件、文档存储和数据交换

<data><message>hello你好!</message>
</data>

2.5 Protobuf (Protocol Buffers)

Google开发的一种语言中立、平台中立、可扩展的二进制序列化格式

message Data {required string message = 1;
}

License

License under CC BY-NC-ND 4.0: 署名-非商业使用-禁止演绎

如需转载请标明出处:http://blog.csdn.net/itas109


Refrence:
NULL

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

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

相关文章

AI是在帮助开发者还是取代他们?——探讨AI在软件开发中的角色与未来

引言 随着人工智能技术的迅猛发展&#xff0c;AI工具在软件开发中的应用越来越广泛。有人认为AI可以显著提升开发者的效率&#xff0c;而也有人担心AI会取代开发者的工作。本文将从三个方面探讨AI在软件开发中的角色&#xff1a;AI工具现状、AI对开发者的影响以及AI开发的未来…

学习springAOP

第三章 Spring AOP 第一节 AOP 简介 1. 概念 AOP全称为Aspect Oriented Programming&#xff0c;表示面向切面编程。何为切面呢&#xff1f; 由此可以得出&#xff0c;切面是一种将那些与业务无关&#xff0c;但业务模块都需要使用的功能封装起来的技术。这样便于减少系统的…

昇思25天学习打卡营第4天|应用实践

昇思25天学习打卡营第4天 文章目录 昇思25天学习打卡营第4天基于 MindSpore 实现 BERT 对话情绪识别模型简介环境配置数据集数据加载和数据预处理input_idsattention_mask 模型构建模型验证模型推理自定义推理数据集 打卡记录 基于 MindSpore 实现 BERT 对话情绪识别 模型简介…

奥比中光astra_pro相机使用记录

一、信息获取 1、官网 用于了解产品信息 http://www.orbbec.com.cn/sys/37.html 2、开发者社区 咨询问题下载开发部https://developer.orbbec.com.cn/ 二 、windowvs19 1、相机型号 orbbec_astro_pro 根据对应的型号找到需要的包工具 踩坑1&#xff0c;因为这个相机型号…

第20章 Mac+VSCode配置C++环境

1. 下载VSCode VSCode下载地址在mac终端里输入xcode- select --install命令&#xff0c;根据提示安装xcode工具。 2. 安装插件&#xff08;4个&#xff09; 打开VScode&#xff0c;点击应用右侧菜单栏 C/C&#xff08;必装&#xff09; Code Runner&#xff08;必装&#xf…

UCOS-III 任务调度与就绪列表管理

01. 就绪优先级位图 在实时操作系统中&#xff0c;任务调度的效率至关重要。UCOS-III通过就绪优先级位图来快速查找最高优先级的就绪任务&#xff0c;从而实现高效调度。就绪优先级位图是一个按位表示的结构&#xff0c;每个位代表一个优先级&#xff0c;当某个优先级上有任务就…

高效管理 TensorFlow 2 GPU 显存的实用指南

前言 在使用 TensorFlow 2 进行训练或预测时&#xff0c;合理管理 GPU 显存至关重要。未能有效管理和释放 GPU 显存可能导致显存泄漏&#xff0c;进而影响后续的计算任务。在这篇文章中&#xff0c;我们将探讨几种方法来有效释放 GPU 显存&#xff0c;包括常规方法和强制终止任…

【FFmpeg】avcodec_open2函数

目录 1. avcodec_open21.1 编解码器的预初始化&#xff08;ff_encode_preinit & ff_decode_preinit&#xff09;1.2 编解码器的初始化&#xff08;init&#xff09;1.3 释放编解码器&#xff08;ff_codec_close&#xff09; FFmpeg相关记录&#xff1a; 示例工程&#xff…

Windows编程之多线程事件对象(Event Object)用法详解

目录 一、前言 二、基础用法 三、API详解 1.创建事件对象 2控制事件状态 3.等待事件对象&#xff1a; 四、实战案例 1.案例描述 2.代码设计 3.总设计代码 4.运行结果 一、前言 事件对象&#xff08;Event Object&#xff09;是我们在大型项目中&#xff0c;进行多线…

竞赛选题 医学大数据分析 - 心血管疾病分析

文章目录 1 前言1 课题背景2 数据处理3 数据可视化4 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于大数据的心血管疾病分析 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9…

AI绘画Stable Diffusion 解锁精美壁纸创作:利用SD与LLM定制你的专属壁纸,AI副业变现指南!

大家好&#xff0c;我是画画的小强 今天给大家分享一下用AI绘画Stable Diffusion 制作精美手机壁纸&#xff0c;这也可能是当前最快AIGC变现的一种途径。虽然本文的主题为手机壁纸&#xff0c;当调整不同的比例的分辨率宽高比例&#xff0c;就可以直接复用到手机、电脑和平板、…

旋转和镜像的关系

旋转矩阵行列式与 在E(3)三维空间中&#xff0c;旋转矩阵的行列式可以用来判断该旋转是否包含镜像变换。 行列式为正&#xff1a; 表示纯旋转&#xff0c;不包含镜像。 旋转矩阵保持向量的长度和角度不变&#xff0c;只是改变向量的方向。 行列式为负&#xff1a; 表示旋转…

机器学习原理之 -- 支持向量机分类:由来及原理详解

支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是统计学习理论的一个重要成果&#xff0c;广泛应用于分类和回归问题。SVM以其高效的分类性能和良好的泛化能力在机器学习领域中占据重要地位。本文将详细介绍支持向量机的由来、基本原理、构建过程及其优缺点。…

LVS负载均衡群集部署之——DR模式的介绍及搭建步骤

一、LVS-DR集群介绍1.1 LVS-DR 工作原理1.2 数据包流向分析1.3 LVS-DR 模式的特点1.4 LVS-DR中的ARP问题1.4.1 问题一1.4.2 问题二二、构建LVS-DR集群2.1 构建LVS-DR集群的步骤&#xff08;理论&#xff09;1.配置负载调度器&#xff08;192.168.80.30&#xff09;&#xff08;…

5分钟教你用AI把老照片动起来,别再去花49块9的冤枉钱了

文章目录 需要的工具 最近&#xff0c;AI视频在各大平台上&#xff0c;又火了。 只是火的形式&#xff0c;变成了将老照片动起来&#xff0c;打情感牌&#xff0c;或者做很多经典电视剧的再整活。 直接把可灵的生成时间&#xff0c;从以前的4分钟&#xff0c;生生的干成了20分钟…

鸿蒙应用笔记

安装就跳过了&#xff0c;一直点点就可以了 配置跳过&#xff0c;就自动下了点东西。 鸿蒙那个下载要12g个内存&#xff0c;大的有点吓人。 里面跟idea没区别 模拟器或者真机运行 真机要鸿蒙4.0&#xff0c;就可以实机调试 直接在手机里面跑&#xff0c;这个牛逼&#xf…

国标GB/T 28181详解:国标GBT28181-2022 SIP服务器发起广播的命令流程

目录 一、定义 二、作用 1、实现信息的集中管理和分发 &#xff08;1&#xff09;信息集中 &#xff08;2&#xff09;信息分发 2、提高信息传输的可靠性和效率 &#xff08;1&#xff09;可靠性 &#xff08;2&#xff09;提高效率 3、支持多种设备和系统的互通 &am…

mongdb学习与使用

1. 基础概念 MongoDB简介&#xff1a; MongoDB是一个基于文档的NoSQL数据库&#xff0c;具有高性能、高可用性和易扩展性。数据存储在类似JSON的BSON格式中。 基本术语&#xff1a; Database&#xff08;数据库&#xff09;&#xff1a; 集合的容器。Collection&#xff08;集合…

国产强大免费WAF, 社区版雷池动态防护介绍

雷池WAF&#xff0c;基于智能语义分析的下一代 Web 应用防火墙 使用情况 我司于2023年4月23日对雷池进行测试&#xff0c;测试一个月后&#xff0c;于2023年5月24日对雷池进行正式切换&#xff0c;此时版本为1.5.1。 里程碑纪念 后续一直跟随雷池进行版本升级&#xff0c;当前…

QT_GUI

1、QT安装 一个跨平台的应用程序和用户界面框架&#xff0c;用于开发图形用户界面&#xff08;GUI&#xff09;应用程序以及命令行工具。QT有商业版额免费开源版&#xff0c;一般使用免费开源版即可&#xff0c;下面安装的是QT5&#xff0c;因为出来较早&#xff0c;使用较多&…