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

如何在Dart语言中实现Base58check转HexString?

在Dart中将Base58Check转换为Hex字符串

要实现Base58Check到Hex字符串的转换(比如TRON钱包地址的转换),可以借助Dart第三方包简化操作,以下是具体实现步骤:

1. 添加依赖

在项目的pubspec.yaml中添加base58check包依赖:

dependencies:
  base58check: ^2.0.0

执行dart pub get完成依赖安装。

2. 编写转换代码

Base58Check编码结构为前缀字节+原始数据+4字节校验和,解码后需要剔除最后4个校验和字节,再将剩余字节转为十六进制字符串:

import 'package:base58check/base58check.dart';

String base58CheckToHex(String base58Str) {
  // 解码Base58Check字符串为字节数组
  final decodedBytes = Base58Check.decode(base58Str);
  // 移除最后4个校验和字节
  final payloadBytes = decodedBytes.sublist(0, decodedBytes.length - 4);
  // 将字节数组转为大写十六进制字符串
  return payloadBytes
      .map((byte) => byte.toRadixString(16).padLeft(2, '0'))
      .join()
      .toUpperCase();
}

void main() {
  // 测试TRON钱包地址转换
  final tronBase58 = 'TNNukJf11S9iJr1RmgViE2kr8LdFCBBeVb';
  final hexResult = base58CheckToHex(tronBase58);
  print(hexResult); // 输出: 41881D16D9CD320C94D93ACBBE52128CCD0FF9A7D4
}

关键说明

  • TRON地址的Base58Check编码前缀为0x41,所以转换后的Hex字符串开头会是41,与示例结果一致。
  • 如果需要适配其他Base58Check前缀规则(比如比特币地址),可以在解码时指定前缀字节,例如Base58Check.decode(base58Str, prefix: [0x00])。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:00:56