RLP序列化算法
RLP
RLP(Recursive Length Prefix)递归长度前缀编码,是由以太坊提出的序列化/反序列化标准,相比json格式体积更小,相比protobuf对多语言的支持更强。
RLP将数据分为两类:
- 字符串
- 列表(可以包含字符串和列表)
编码规则
- 字符串长度是1,并且值属于[0x00, 0x7f],那么其RLP编码就是字符串本身
- 字符串长度是0-55,那么RLP编码为前缀0x80+字符串长度,即[0x80, 0xb7],后面接字符串本身
- 字符串长度大于55,那么RLP编码为前缀0xb7+字符串长度的长度(最大8字节),即[0xb8, 0xbf],后接长度编码+字符串本身
- 列表长度是0-55,那么RLP编码为前缀0xc0+列表长度,即[0xc0, 0xf7],后接列表中各数据项的rlp编码
- 列表长度大于55,那么RLP编码为前缀0xf7+列表长度的长度(最大8字节),即[0xf8, 0xff],后接列表中各数据项rlp编码
RLP序列化算法的更多相关文章
- Java的序列化算法--解释序列后字节含义
Java的序列化算法 序列化算法一般会按步骤做如下事情: ◆将对象实例相关的类元数据输出. ◆递归地输出类的超类描述直到不再有超类. ◆类元数据完了以后,开始从最顶层的超类开始输出对象实例的实际数据值 ...
- Java序列化算法
Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是一种将这些字节重建成一个对象的过程.java序列化API提供一种处理对象序列化的标准机 ...
- 2018-8-10-C#-配置文件存储-各种序列化算法性能比较
title author date CreateTime categories C# 配置文件存储 各种序列化算法性能比较 lindexi 2018-08-10 19:16:52 +0800 2018 ...
- C# 配置文件存储 各种序列化算法性能比较
本文比较多个方式进行配置文件的存储,对比各个不同算法的读写性能. 在应用软件启动的时候,需要读取配置文件,但是启动的性能很重要,所以需要有一个很快的读取配置文件的方法. 如果你不想看过程,那么请看拖动 ...
- Objective-C NSData与实现NSCoding协议进行序列化和反序列化
1.NSData NSData是Objective-C语言中数据的基本类型,其成分可以理解为字节指针和长度的封装的类,来看看源代码 @interface NSData : NSObject <N ...
- Java基础-序列化
Java序列化是将一个对象编码成一个字节流,反序列化将字节流编码转换成一个对象. 序列化是Java中实现持久化存储的一种方法: 为数据传输提供了线路级对象表示法. Java的序列化机制是通过在运行时判 ...
- spark新能优化之序列化
概叙: 在任何分布式系统中,序列化都是扮演着一个重要的角色的.如果使用的序列化技术,在执行序列化操作的时候很慢,或者是序列化后的数据还是很大,那么会让分布式应用程序的性能下降很多.所以,进行Spark ...
- Java:对象的序列化
一.对象序列化机制 序列化机制允许将实现序列化的Java对象转换为字节序列,这些字节序列可以被保存在磁盘上或通过网络传输,以备以后重新恢复原来的对象: 序列化机制使得对象可以脱离程序的运行而独立存在: ...
- Java序列化的机制和原理
Java序列化的机制和原理 本文讲解了Java序列化的机制和原理.从文中你可以了解如何序列化一个对象,什么时候需要序列化以及Java序列化的算法. 有关Java对象的序列化和反序列化也算是Java基础 ...
随机推荐
- IEDA使用Tomcat后控制台中文出现乱码
如下图所示,Intellij IDEA显示中文为乱码, 根据Intellij IDEA控制台输出,Tomcat Log出现乱码,因此可以将问题定位到Tomcat上,具体解决方法: 第一步:打开Tom ...
- boostrap栅格系统自适应的布局
1.栅格系统 Bootstrap是基于移动优先的原则开发的,使用了一系列的媒体查询(media queries)方法,为我们的布局和界面创建自适应的的分界点.这些分界点主要是基于视口宽度的最小值, ...
- mongodb查询语句与sql语句对比
左边是mongodb查询语句,右边是sql语句.对照着用,挺方便. db.users.find() select * from users db.users.find({"age" ...
- ASP.NET Core 3.x启动时运行异步任务(一)
这是一个大的题目,需要用几篇文章来说清楚.这是第一篇. 一.前言 在我们的项目中,有时候我们需要在应用程序启动前执行一些一次性的逻辑.比方说:验证配置的正确性.填充缓存.或者运行数据库清理/迁移等 ...
- Python 开发GUI之UI界面的三种引入形式
[纯手工代码] # -*- coding: utf-8 -*- # Author:Jack LEE # FileName:main # CreatedDate: 2020/9/17 # 手写代码的基础 ...
- Java多线程1:进程与线程
进程和线程 讲线程和进程前,先讲下同步(Synchronous).异步(Asynchronous).并发(Concurrency).并行(Parallelism). 同步(Synchronous)和异 ...
- Mysql数据分片技术(一)——初识表分区
1. 为什么需要数据分片技术 2. 3种数据分片方式简述 3. 分片技术原理概述 4. 对单表分区的时机 1为什么需要数据分片技术 数据库产品的市场 在互联网行业内,绝大部分开发人员都会遇到数据表的性 ...
- k8s报错解决思路
问题1 1.报错信息如下 [root@ken1 ~]# kubectl get po The connection to the server 192.168.64.11:6443 was refus ...
- FreeSWITCH 处理Refer盲转时,UUI传递不对(没有将SIP 消息头Refer-To中的User-to-User传递给B-Leg)
运行环境: CentOS 7.6 FreeSWICH 1.6.18 一.问题场景: FreeSWITCH收到REFER命令后,重新发起的INVITE消息中的 "U ...
- 【JVM系列1】深入分析Java虚拟机堆和栈及OutOfMemory异常产生原因
前言 JVM系列文章如无特殊说明,一些特性均是基于Hot Spot虚拟机和JDK1.8版本讲述. 下面这张图我想对于每个学习Java的人来说再熟悉不过了,这就是整个JDK的关系图: 从上图我们可以看到 ...