ファイルを選択
  1. base64hub
  2. その他の基数
  3. Base58 デコーダー

Base58 デコーダー:Base58 を 16進数やテキストに

Base58 文字列を貼り付けると、中のバイト列が 16進数で表示されます。先頭の 1 はゼロバイトとして戻り、必要に応じて出力をテキストや Base64 に切り替えられます。

無料 登録不要・制限なし ローカル アップロードなし 16進数で出力 テキストや Base64 にもワンクリック 更新日 2026/10/27
入力 0バイト 0 B出力 0

ブラウザ内で処理されます。このページがデータをどこかに送信することはできません – その根拠

Base58 をデコードする方法

  1. 入力 · Base58 に文字列を貼り付けます。空白と改行は無視されます。
  2. 出力 · Hex(16進数)でバイト列を確認します。出力の下で大文字/小文字を切り替えたり、空白や : などの区切り文字を加えたり、1 行あたりのバイト数を 16 や 32 にしてダンプを折り返したりできます。
  3. 文字列が Bitcoin 形式の Base58 でない場合は、入力の下のアルファベットを Flickr か Ripple に変更します。
  4. 別の表示にしたいときは変換先を変えます。データが文字列だったならテキスト、API や設定ファイル用なら Base64 です。Base58 を Base64 にはこの変換用に用意したページです。
  5. 出力をコピーするか、16進数をダウンロードするか、バイトを保存でデコードしたバイト列をファイルとして取得します。

よくある Base58 文字列のデコード結果

Base58バイト列(16進数)内容
1111111111111111111111111111111132 × 00Solana の System Program(ゼロだけの 32 バイトの鍵)
TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA06ddf6e1d765…7eff00a9(32 バイト)Solana の SPL Token のプログラム ID
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa00 62e907b1…ebb88f18 c29b7d93Bitcoin のジェネシスブロックのアドレス:バージョン、ハッシュ、チェックサム
QmQudp5N7EzTxrBk3yESEKyEroMYNd7R22G2KWffwNZyzq1220 262a86b6…e0882d8aIPFS CIDv0:SHA-256 のマルチハッシュヘッダーと 32 バイトのダイジェスト
9Ajdvzr48656c6c6fテキストの Hello

バイト列を読めば構造がわかります。00 か 05 で始まる 25 バイトはチェックサムが付いたままの Bitcoin アドレス、1220 で始まる 34 バイトは CIDv0、目に見える構造のない 32 バイトはおそらく公開鍵です。

先頭の 1 はゼロバイト

Base58 では、先頭の 1 はそれぞれ 1 つの 00 バイトにデコードされ、残りの文字列は 1 つの数としてデコードされます。このデコーダーはそのバイトを保持するので、上のジェネシスアドレスは 24 バイトではなく 25 バイトを返します。数だけを変換するデコーダーはこれを失い、最初の兆候はたいてい、鍵が 1 バイト足りない、あるいはチェックサムがどうしても一致しない、というものです。

このルールは逆方向にも当てはまります。1111 は 4 つのゼロバイトですが、2 は 1 バイトの 01 です。

デコードに失敗するとき

  • 予期しない文字 "0"、"O"、"I"、"l"。 この 4 つは他の文字と紛らわしいため、Base58 のアルファベットから除かれています。エラーには位置が表示されます。たいていは書き写しの誤りです。
  • 予期しない +、/、=。 文字列は Base64 です。Base64 デコーダーを使ってください。
  • 入力が bc1 で始まる。 それは Bech32 の SegWit アドレスで、独自のチェックサムとアルファベットを持つ別のエンコーディングです。ここでは失敗するか、意味のないバイト列にデコードされます。
  • 16進数は正しいが 4 バイト長い。 Base58Check の値を素の Base58 としてデコードしています。最後の 4 バイトがチェックサムです。取り除くか、Base58Check を使ってください。
  • 入力が 64 KB を超える。 Base58 は入力全体を 1 つの数として扱うため、ツールは応答性を保つために 64 KB で止めます。実際の Base58 の値は数十文字です。

JavaScript で Base58 を 16進数にデコードする

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 のアドレスをデコードするにはどうすればいいですか?

ここに貼り付けてください。16進数の出力が 32 バイトの Ed25519 公開鍵です。System Program のアドレス 11111111111111111111111111111111 は 32 個のゼロバイトにデコードされ、先頭のゼロのルールを手早く確かめられます。

Bitcoin アドレスが 25 バイトにデコードされるのはなぜですか?

従来型のアドレスは Base58Check で、バージョンバイト 1、公開鍵ハッシュ 20 バイト、チェックサム 4 バイトからなります。素の Base58 のデコードでは 25 バイトすべてが返ります。Base58Check デコーダーはチェックサムを検証して取り除きます。

デコーダーが文字列を拒否するのはなぜですか?

Base58 には 0、O、I、l がないので、これらがあればたいていは入力ミスか別のエンコーディングです。+、/、= を含む文字列は Base64、0x… は 16進数です。

JavaScript で Base58 を 16進数に変換するには?

BigInt を 1 桁ずつ掛け合わせて積み上げ、toString(16) で出力し、先頭の 1 ごとに 00 を付け足します。このページのスニペットに関数全体があります。