美文网首页
以太坊RLP包用法

以太坊RLP包用法

作者: Li_MAX | 来源:发表于2018-10-16 10:49 被阅读103次
/*
rlp包用法
rlp目的是可以将常用的数据结构,uint,string,[]byte,struct,slice,array,big.int等序列化以及反序列化.
要注意的是rlp特别不支持有符号数的序列化
具体用法见下
*/
//编码
type TestRlpStruct struct {
    A      uint
    B      string
    C      []byte
    BigInt *big.Int
}

//rlp用法
func TestRlp(t *testing.T) {
    //1.将一个整数数组序列化
    arrdata, err := rlp.EncodeToBytes([]uint{32, 28})
    fmt.Printf("unuse err:%v\n", err)
    //fmt.Sprintf("data=%s,err=%v", hex.EncodeToString(arrdata), err)
    //2.将数组反序列化
    var intarray []uint
    err = rlp.DecodeBytes(arrdata, &intarray)
    //intarray 应为{32,28}
    fmt.Printf("intarray=%v\n", intarray)

    //3.将一个布尔变量序列化到一个writer中
    writer := new(bytes.Buffer)
    err = rlp.Encode(writer, true)
    //fmt.Sprintf("data=%s,err=%v",hex.EncodeToString(writer.Bytes()),err)
    //4.将一个布尔变量反序列化
    var b bool
    err = rlp.DecodeBytes(writer.Bytes(), &b)
    //b:true
    fmt.Printf("b=%v\n", b)

    //5.将任意一个struct序列化
    //将一个struct序列化到reader中
    _, r, err := rlp.EncodeToReader(TestRlpStruct{3, "44", []byte{0x12, 0x32}, big.NewInt(32)})
    var teststruct TestRlpStruct
    err = rlp.Decode(r, &teststruct)
    //{A:0x3, B:"44", C:[]uint8{0x12, 0x32}, BigInt:32}
    fmt.Printf("teststruct=%#v\n", teststruct)

}

相关文章

  • 以太坊RLP包用法

  • go ethereum 源码解析--rlp

    RLP介绍 RLP是Recursive Length Prefix的简写。是以太坊中的序列化方法,以太坊的所有对象...

  • RLP 递归长度前缀

    RLP 递归长度前缀 RLP(recursive length prefix):递归长度前缀。 RLP编码是以太坊...

  • RLP编码原理

    RLP编码原理 RLP(Recursive Length Prefix,递归长度前缀)编码算法,是以太坊中数据序列...

  • [以太坊源码分析]:RLP编码

    RLP编码 RLP编码是以太坊对象序列化和反序列化的主要方法,可编码任意嵌套的二进制数据。以太坊中多个地方都用到了...

  • 以太坊C++源码解析(四)RLPStream类

    RLP是一种特殊的二进制编码解码方式,以太坊里数据包都是采用这种方式编码的,和传统的结构相比,RLP编码更节省空间...

  • 以太坊交易签名

    以太坊的Transcation结构如下: 对交易签名步骤如下: 对交易本身进行rlp编码,再对rlp编码进行kec...

  • 以太坊 RLP详解

    RLP(Recursive Length Rrefix, 递归长度前缀)提供了一种适用于任意二进制数据数组的编码,...

  • 以太坊之rlp

    一般理解rlp你会找到这两篇。https://github.com/ethereum/wiki/wiki/%5B%...

  • 以太坊rlp编解码规则及实现

    rlp编码 具体规则定义可参考该文章以太坊源码学习—RLP编码 这里摘录其关键部分 编码数据类型 (1)byte数...

网友评论

      本文标题:以太坊RLP包用法

      本文链接:https://www.haomeiwen.com/subject/djiqbftx.html