编码工具

Base58

ethers.utils.base58.decode( textData ) Uint8Array

返回textData(经过base-58编码)解码成Uint8Array类型的数据。

base58.decode("TzMhH"); // Uint8Array [ 18, 52, 86, 120 ]
ethers.utils.base58.encode( aBytesLike ) string

返回aBytesLike(经过base-58编码)解码成字符串类型的数据。

base58.encode("0x12345678"); // 'TzMhH' base58.encode([ 0x12, 0x34, 0x56, 0x78 ]); // 'TzMhH'

Base64

ethers.utils.base64.decode( textData ) Uint8Array

返回textData(经过base-64编码)解码成Uint8Array类型的数据。

base64.decode("EjQ="); // Uint8Array [ 18, 52 ]
ethers.utils.base64.encode( aBytesLike ) string

返回aBytesLike(经过base-64编码)解码成字符串类型的数据。

base64.encode("0x1234"); // 'EjQ=' base64.encode([ 0x12, 0x34 ]); // 'EjQ='

递归长度前缀编码(RLP编码)

递归长度前缀编码(Recursive Length PrefixRLP编码)在以太坊中被用来序列化数组和数据的嵌套结构。

ethers.utils.RLP.encode( dataObject ) string< DataHexString >

将结构化数据对象编码到RLP编码的形式。

RLP.encode("0x12345678"); // '0x8412345678' RLP.encode([ "0x12345678" ]); // '0xc58412345678' RLP.encode([ new Uint8Array([ 0x12, 0x34, 0x56, 0x78 ]) ]); // '0xc58412345678' RLP.encode([ [ "0x42", [ "0x43" ] ], "0x12345678", [ ] ]); // '0xcac342c1438412345678c0' RLP.encode([ ]); // '0xc0'
ethers.utils.RLP.decode( aBytesLike ) DataObject

将RLP编码的aBytesLike解码为其结构化数据对象

所有的Data组件将作为一个DataHexString返回。

RLP.decode("0x8412345678"); // '0x12345678' RLP.decode("0xcac342c1438412345678c0"); // [ // [ // '0x42', // [ // '0x43' // ] // ], // '0x12345678', // [] // ] RLP.decode("0xc0"); // []

数据对象(Data Object)

数据对象是一种递归结构,用于序列化以太坊中的许多内部结构。每个数据对象可以是:

Examples

  • "0x1234"
  • [ "0x1234", [ "0xdead", "0xbeef" ], [ ] ]