encode
# 编码
# URL 编码
%2F与/的编码关系是怎样的?
%2F 和 / 之间存在编码关系
URL 编码是一种将特殊字符转换为 URL 安全格式的过程。在 URL 中, 某些字符具有特殊含义, 如 / 是用于分隔路径的字符。如果一个字符在 URL 中具有特殊含义, 但需要表示该字符本身而不是其特殊含义, 就需要对其进行编码
在 URL 编码中, 每个字符都可以表示为 % 加上两个十六进制数字的形式。对于 / 字符, 其编码是 %2F
当在 URL 中包含 / 字符时, 为了避免与路径分隔符混淆, 需要对其进行编码, 即将 / 转换为 %2F。这样可以确保在 URL 中正确传递和解析这个字符
例如, 如果要将路径 /path/to/file 进行 URL 编码, 编码后的结果将是 %2Fpath%2Fto%2Ffile。在这个编码后的 URL 中, %2F 代表原始的 / 字符
总结起来, %2F 是 / 字符的 URL 编码表示形式, 用于在 URL 中表示路径分隔符而不引起歧义
# ASCII
ASCII(American Standard Code for Information Interchange)字符集是一个最初为英语和其他西欧语言设计的字符编码标准。它使用 7 位(或 8 位, 包括一个奇偶校验位)来表示字符, 包括控制字符、数字、字母、标点符号和特殊字符。ASCII 字符集包括以下内容:
- 控制字符: 这些字符通常没有可见的图形表示, 用于控制文本终端和通信设备的行为。例如, 换行符(\n)、回车符(\r)和制表符(\t)等
- 可打印字符: 这些字符具有可见的图形表示, 包括大写字母(A-Z)、小写字母(a-z)、数字(0-9)和常见标点符号(例如逗号、句点、感叹号等)
- 特殊字符: 这些字符包括空格(空格符)、制表符(\t)、换行符(\n)、回车符(\r)以及其他一些特殊用途的字符(例如退格符 \b)
ASCII 字符集总共包含 128 个字符, 编号从 0 到 127。这些字符在计算机和通信中被广泛使用, 尤其是在早期计算机系统和文本通信中。由于它是一个 7 位字符集, 因此只包含 128 个字符, 不包括一些非拉丁字符(例如希腊字母、俄罗斯字母等)
虽然 ASCII 字符集最初是为英语设计的, 但它仍然是计算机系统中最常见的字符编码之一, 并且在许多编程语言、操作系统和通信协议中被广泛使用。然而, 在处理多语言文本和国际化需求时, 通常需要使用更多容纳更多字符的字符编码, 例如 UTF-8、UTF-16 等
# base64
Base64(基底 64)是一种基于 64 个可打印字符来表示二进制数据的表示方法. wiki (opens new window)
Base64算法将3个字节编码为4个字符
# unicode
现代的操作系统、浏览器、文本编辑器和大多数现代应用程序都支持 Unicode,并且能够渲染 Unicode 字符。Unicode 是一个国际标准,用于一致地编码和表示文本。它包括了几乎所有的文字字符和许多符号,包括表情符号
当你在文本中插入一个 Unicode 表情字符时,支持 Unicode 的系统会识别并渲染它为相应的表情符号。下面是一些具体原因:
- Unicode 支持: 操作系统和应用程序支持 Unicode,能够识别并显示 Unicode 字符
- 字体支持: 系统字体包含了这些 Unicode 表情符号,并且知道如何渲染它们
- 编码识别: 文本编辑器和浏览器会识别文本编码,并正确渲染 Unicode 字符
在代码中的使用你也可以在代码中直接使用这些 Unicode 表情符号。例如,在 JavaScript 中:
const message = 'Hello, world! 😊';
console.log(message);
2
这样做会在控制台中输出带有表情符号的消息
# 字节码处理
# big/little endian
大端(big endian)和小端(little endian). link (opens new window). hexdump 输出 16 进制 jump
字节存储顺序主要分为大端序(Big-endian)和小端序(Little-endian),区别如下
Big-endian: 高位字节存入低地址,低位字节存入高地址Little-endian: 低位字节存入低地址,高位字节存入高地址。 (低字节在前,高字节在后)
一般来说,x86 系列 CPU 都是 Little-endian 字节序,PowerPC 通常是 Big-endian 字节序
因为网络协议也都是采用 Big-endian 方式传输数据的,所以有时也把 Big-endian 方式称为网络字节序.