首页 > 解决方案 > Dart Bech32 和 Hex 编码和解码

问题描述

我正在尝试将此 Bech32 地址解码为十六进制。当给定 cosmos1qpjrq625nglf3xx9chdkq953nhrd3nygte44rt。它将其分解为“cosmos”的头部,其余部分表示为 8 位无符号整数列表 (Uint8List)。

当它被编码为十六进制(HEX.Encode)时,我得到的值为 00011203001a0a1413081f091106060518170d16000514111317030d11130408。

但是,这意味着要让我 00643069549a3e9898c5c5db6016919dc6d8cc88 代替。

如果你去https://slowli.github.io/bech32-buffer/ -> 并解码 cosmos1qpjrq625nglf3xx9chdkq953nhrd3nygte44rt 得到 00643069549a3e9898c5c5db6016919dc6d8cc88,你可以检查这个。

我无法弄清楚这个问题,是否可能 - 格式错误,不同的基础?还是我这样做完全错了。

谢谢,我很感激任何回复这是一段代码;

import 'package:bech32/bech32.dart';
import 'package:hex/hex.dart';

  Bech32Codec bech32codec = Bech32Codec();
  //  target address : 00643069549a3e9898c5c5db6016919dc6d8cc88  -> to get to this address

  String address = 'cosmos1qpjrq625nglf3xx9chdkq953nhrd3nygte44rt';
  Bech32 bech32 = bech32codec.decode(address); 
  print(bech32.data); 
  // this returns [0, 1, 18, 3, 0, 26, 10, 20, 19, 8, 31, 9, 17, 6, 6, 5, 24, 23, 13, 22, 0, 5, 20, 17, 19, 23, 3, 13, 17, 19, 4, 8] 

  print(bech32.hrp);
  print(bech32codec.encode(Bech32("cosmos", bech32.data))); 

  var answer2 = HEX.encode(bech32.data);
  print(answer2);
var decode = HEX.decode('00643069549a3e9898c5c5db6016919dc6d8cc88');

  print(decode);
  // this returns [0, 100, 48, 105, 84, 154, 62, 152, 152, 197, 197, 219, 96, 22, 145, 157, 198, 216, 204, 136]

标签: darthexdecodeencode

解决方案


推荐阅读