You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在JavaScript/jQuery中如何将BASE58格式Solana地址转换为Uint8数组

Base58解码转Uint8Array实现方案

jQuery本身只封装了DOM操作、Ajax等前端常用能力,没有内置Base58编解码相关的API,所以无需通过jQuery实现该功能,以下为JavaScript环境下的两种实现方式:

方案1:使用现有依赖(推荐生产环境使用)

如果你已经在项目中对接Solana生态,直接使用@solana/web3.js内置的解码方法即可,不用额外引入其他工具:

import { PublicKey } from '@solana/web3.js';

const address = "9vpsmXhZYMpvhCKiVoX5U8b1iKpfwJaFpPEEXF7hRm9N";
const uint8Array = new PublicKey(address).toBytes();
console.log(uint8Array); // 输出符合要求的Uint8数组

如果不需要引入完整的Solana SDK,也可以使用独立的bs58解码库:

import bs58 from 'bs58';

const address = "9vpsmXhZYMpvhCKiVoX5U8b1iKpfwJaFpPEEXF7hRm9N";
const uint8Array = bs58.decode(address);
console.log(uint8Array);

方案2:纯原生JavaScript实现(无任何依赖)

如果不想引入第三方依赖,可以直接使用下面的原生实现,兼容所有浏览器和Node.js环境:

const address = "9vpsmXhZYMpvhCKiVoX5U8b1iKpfwJaFpPEEXF7hRm9N";

// 纯JS实现Base58解码
function bs58Decode(base58Str) {
  const ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
  const ALPHABET_MAP = {};
  for (let i = 0; i < ALPHABET.length; i++) {
    ALPHABET_MAP[ALPHABET[i]] = i;
  }

  if (base58Str.length === 0) return new Uint8Array();

  const bytes = [0];
  for (let i = 0; i < base58Str.length; i++) {
    const c = base58Str[i];
    if (!(c in ALPHABET_MAP)) {
      throw new Error('无效的Base58字符');
    }
    let carry = ALPHABET_MAP[c];
    for (let j = 0; j < bytes.length; j++) {
      carry += bytes[j] * 58;
      bytes[j] = carry & 0xff;
      carry >>= 8;
    }
    while (carry > 0) {
      bytes.push(carry & 0xff);
      carry >>= 8;
    }
  }

  // 处理前导1
  let leadingZeros = 0;
  while (base58Str[leadingZeros] === '1') {
    leadingZeros++;
  }
  return new Uint8Array(Array(leadingZeros).fill(0).concat(bytes.reverse()));
}

// 调用方法
const result = bs58Decode(address);
console.log(result);
// 输出结果和你给出的预期格式一致

内容的提问来源于stack exchange,提问作者Nancy Moore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:36:05