关于此工具
Base62 工具将数字和字节串编码为紧凑的 62 符号字母表 0-9A-Za-z,并可解码还原。Base62 常用于短 ID、URL slug 和短链接,因为它保持 URL 安全,不含 Base64 使用的 +、/ 或 = 字符。所有转换都通过 JavaScript BigInt 在你的浏览器本地运行,因此任意大的值都精确无误,且不会上传任何内容。
整数模式将输入视为任意精度整数(十进制,或 0x 前缀的十六进制):编码时反复除以 62 并在前面加上 alphabet[remainder],解码时计算 Σ alphabet.indexOf(ch)·62^position。字节模式将输入字节(UTF-8 文本或十六进制)视为一个大端大整数并应用相同的 62 进制转换,但它还会像比特币的 Base58 那样保留前导零字节:每个前导 0x00 字节变成一个前导 '0' 字符,从而实现无损往返。
标准字母表先排数字、再排大写、最后排小写(0-9A-Za-z)。有些库——尤其是基于 GMP 构建的——先排数字、再排小写、最后排大写(0-9a-zA-Z),这会对同一个值产生不同的输出;字母表切换让你能匹配所用系统的顺序。选择方向、整数或字节模式、字节的输入格式,以及字母表变体。
常见问题
整数模式与字节模式有何区别?
整数模式将单个任意精度数字(十进制或 0x 十六进制)转换为 Base62 字符串并还原为十进制整数。字节模式将一串字节(来自 UTF-8 文本或十六进制)作为大端大整数转换,并把前导零字节保留为前导的字母表零字符,从而使二进制数据精确往返。
为什么有两个字母表?
标准字母表是 0-9A-Za-z(大写在小写之前)。基于 GMP 的库使用 0-9a-zA-Z(小写在大写之前)。同一个值在两者下编码不同,因此切换让你能与其他工具期望的任一顺序互操作。
它能处理多大的数字?
任意大小。该工具使用 JavaScript BigInt,因此没有 2^53 精度限制——你可以精确地编码和解码任意长度的整数与字节串,这对哈希、UUID 和长标识符至关重要。
字节模式中如何处理前导零?
每个前导 0x00 字节被编码为一个前导的字母表零字符(类似 Base58 的前导 '1')。解码时,每个前导字母表零字符会还原一个 0x00 字节,因此编码再解码会返回完全一致的原始字节序列。