项目 | 描述 |
---|---|
搜索引擎 | Bing、Google |
AI 大模型 | 文心一言、通义千问、讯飞星火认知大模型、ChatGPT |
Tuts+ | Base What? A Practical Introduction to Base Encoding |
RFC 文档 | RFC4648 |
项目 | 描述 |
---|---|
绘图工具 | draw.io 21.7.5 |
Base
这个词在数学中通常用来描述计数系统的 基数
,基数即计数系统中用于表示数字的不同符号的数量
。
举个栗子
0
和 1
,故二进制计数系统可以使用 Base2
来进行表示。0 ~ 9
,故十进制计数系统可以使用 Base10
来进行表示。0 ~ 9 及 a ~ f
,故十六进制计数系统可以使用 Base16
来进行表示。Base 在 计算机编码系统
中则用于表示该编码系统所使用的字符集的大小。Base
描述了该系统的基数,而后面的数字表示这个 基数的具体值
。这样的命名方法 直观地
告诉我们这个编码系统使用了多少种不同的字符来表示数据。
举个栗子
十六个字符
来对数据进行编码。六十四个字符
来对数据进行编码。Base 编码能够将 二进制数据转换为文本表示
,以便在不同的环境中使用。
项目 | 描述 |
---|---|
便于数据的查看 |
二进制数据可能包含不能直接打印或显示的字符。Base 编码可以 将这些非打印字符转换为可打印的字符集,从而使数据更容易处理和查看 。 |
字符集限制 |
许多传输协议和系统只接受特定的字符集,如 ASCII。Base64 和其他 Base 编码可以 将任意的二进制数据转换为这些协议和系统可接受的格式 。 |
数据完整性 |
在某些情况下,数据传输可能会导致特定的二进制值被解释为 控制字符等特殊字符 ,从而损害数据的完整性。使用 Base 编码可以确保数据在传输过程中不会被误解释或损坏。 |
ASCII(American Standard Code for Information Interchange)
是一种字符编码标准,用于 将文本字符映射到数值
。ASCII
最早在计算机领域中广泛使用,它定义了 128
个不同的字符,包括 控制字符(如换行和回车)
以及 可打印字符(如字母、数字、标点符号等)
。ASCII 定义的每个字符都被分配了一个 唯一的整数值
,范围从 0
到 127
。
注:
基于 ASCII 编码进行扩展的
,因此 ASCII
编码也被认为是 字符编码的基础
。256
个之多。Base16 编码是一种将二进制数据转换为文本表示的编码方式,它使用 16个字符中的一个
来表示 二进制数值中的 4 个二进制位
。
在 Base16 编码中,被用于编码的字符与十六进制数值所使用的字符相同,故 Base16 编码又被称为 十六进制编码
。
Base16 字符集
是指用于 Base16 编码
的字符集,由 0 ~ 9 和 A ~ F
共十六个字符组成。
获取字符在其所属编码系统中的二进制表示
由于 编码是基于字符在其所属编码系统中对应的二进制数进行的
,故在对字符进行编码前需要先获取该字符的二进制表示。
将二进制数值按照一定的规则进行拆分(方便后续第三步的进行)
在计算机中,一个字节由 8 个二进制位
组成,每一个二进制位可以是 0
或 1
。当我们使用 十六进制
来表示这 8
位时,我们实际上是将这 8 个二进制位
拆分为两个 4 位二进制数
。每个 4 位二进制数部分可以表示 从 0 到 15
( 2 4 2^4 24)的数字,这恰好对应于 Base16 中的 16
个字符。
由二进制数值到 Base16 编码
将拆分的 4 个二进制位转化为十进制数值(便于和 Base16 字符集进行对比,如果对二进制比较熟悉可以省略这一步)
并依据 Base16 编码表进行 对比替换
。
举个栗子
ASCII 文本(通过 ASCII 在计算机中存储的字符组成的文本)
Hel 在经过 Base16 编码后得到结果 48656C
。
注:
在将数据转化为 Base16 编码的过程中,获取其 ASCII 值并不是必须的
。除 ASCII 字符外的字符(如中文)
也可以进行 Base16 编码,由于 编码是针对二进制数据进行的
,故对字符进行编码前首先得先知道该字符 在其所使用的编码系统中使用怎样的二进制数据进行存储
。
对使用 Base16 进行编码后的数据可以通过 Base16 编码的逆过程
实现 Base16 的解码。
由于在对字符进行 Base16 编码的过程中,使用 一个字节存储的 ASCII 字符需要使用两个同属于 ASCII 字符的 Base16 字符进行表示
。故在将文本进行 Base16 编码后,编码后得到的文本将占据原来的 两倍
之多。