上传文件
  1. base64hub
  2. 其他进制编码
  3. Base58 解码

Base58 解码器:Base58 转 Hex 和文本

粘贴一个 Base58 字符串,以 hex 形式查看其中的字节。开头的 1 会还原为零字节,需要时还可以把输出切换为文本或 Base64。

免费 无需注册,不限次数 本地 不上传任何内容 输出 Hex 一键切换为文本或 Base64 更新于 2026年10月27日
输入 0字节 0 B输出 0

在你的浏览器中处理。此页面无法将你的数据发送到任何地方: 我们如何确认

如何解码 Base58

  1. 把字符串粘贴到 输入 · Base58 中。空格和换行会被忽略。
  2. 在 输出 · Hex 中读取字节。在输出下方可以切换 大小写,添加空格或 : 等 分隔符,或按 16 或 32 每行字节数 拆分输出。
  3. 如果字符串不是比特币风格的 Base58,请把输入下方的 字母表 改为 Flickr 或 Ripple。
  4. 需要其他形式时,修改 到:数据原本是字符串就选 文本,用于 API 或配置文件就选 Base64。Base58 转 Base64 是专门为这种转换准备的页面。
  5. 点击 复制输出、下载 hex,或者用 保存字节 把解码后的字节保存为文件。

常见 Base58 字符串解码后是什么

Base58字节(hex)含义
1111111111111111111111111111111132 × 00Solana System Program(全零的 32 字节密钥)
TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA06ddf6e1d765…7eff00a9(32 字节)Solana SPL Token 程序 ID
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa00 62e907b1…ebb88f18 c29b7d93比特币创世区块地址:版本、哈希、校验和
QmQudp5N7EzTxrBk3yESEKyEroMYNd7R22G2KWffwNZyzq1220 262a86b6…e0882d8aIPFS CIDv0:SHA-256 multihash 头部和 32 字节摘要
9Ajdvzr48656c6c6f文本 Hello

读出字节就能看出结构。以 00 或 05 开头的 25 字节结果,是仍带着校验和的比特币地址;以 1220 开头的 34 字节结果是 CIDv0;看不出结构的 32 字节,最有可能是公钥。

开头的 1 就是零字节

在 Base58 中,每个开头的 1 都解码为一个 00 字节,字符串的其余部分则作为一个整数解码。本解码器会保留这些字节,所以上面的创世区块地址返回 25 个字节,而不是 24 个。只转换数字的解码器会丢掉它们,最先出现的症状通常是密钥少了一个字节,或者校验和永远对不上。

这条规则反过来也成立:1111 是四个零字节,而 2 是单个字节 01。

解码失败的情况

  • 意外字符 "0"、"O"、"I" 或 "l"。这四个字符不在 Base58 字母表中,因为它们和别的字符长得太像而被排除了。错误提示会给出位置;通常是抄写错误。
  • 意外的 +、/ 或 =。这个字符串是 Base64。请使用 Base64 解码器。
  • 输入以 bc1 开头。这是 Bech32 格式的 SegWit 地址,是另一种编码,有自己的校验和与字母表。它在这里要么报错,要么解码出无意义的字节。
  • hex 是对的,但多了 4 个字节。你把 Base58Check 值当作普通 Base58 解码了。最后 4 个字节是校验和;去掉它们,或者使用 Base58Check。
  • 输入超过 64 KB。Base58 把整个输入当作一个数字处理,所以工具在 64 KB 处停止,以保持页面流畅。实际的 Base58 值只有几十个字符。

在 JavaScript 中把 Base58 解码为 hex

有了 BigInt,转换代码很短。浏览器和 Node.js 中都可以运行:

const ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";

function base58ToHex(s) {
  let n = 0n;
  for (const ch of s) {
    const v = ALPHABET.indexOf(ch);
    if (v < 0) throw new Error(`not Base58: ${ch}`);
    n = n * 58n + BigInt(v);
  }
  let hex = n === 0n ? "" : n.toString(16);
  if (hex.length % 2) hex = "0" + hex;
  const zeros = s.length - s.replace(/^1+/, "").length;
  return "00".repeat(zeros) + hex;
}

base58ToHex("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa");
// '0062e907b15cbf27d5425399ebf6f0fb50ebb88f18c29b7d93'

更多 JavaScript 字节处理见 JavaScript 页面。

常见问题

如何解码 Solana 地址?

粘贴到这里即可:hex 输出就是 32 字节的 Ed25519 公钥。System Program 的地址 11111111111111111111111111111111 解码为 32 个零字节,可以直观地看到前导零规则的作用。

为什么我的比特币地址解码后是 25 个字节?

传统地址是 Base58Check:1 个版本字节、20 字节的公钥哈希和 4 字节的校验和。普通的 Base58 解码会返回全部 25 个字节。Base58Check 解码器会帮你验证并去掉校验和。

为什么解码器拒绝我的字符串?

Base58 中没有 0、O、I 和 l,出现其中之一通常意味着输错了,或者是另一种编码。含有 +、/ 或 = 的字符串是 Base64,0x… 则是 hex。

如何在 JavaScript 中把 Base58 转换为 hex?

用 BigInt 逐位累乘,用 toString(16) 输出,然后为每个开头的 1 补上 00。本页的代码片段给出了完整的函数。