首页
学习
活动
专区
圈层
工具
发布

RLP译码
EN

Ethereum用户
提问于 2018-01-01 20:15:48
回答 2查看 2.1K关注 0票数 3

嗨!

我有一些数据,像这个( 827ab7 ),编码RLP。

我怎么知道,它是什么(字符串,列表还是int)?

EN

回答 2

Ethereum用户

发布于 2018-01-01 23:00:23

另一个答案提供了有用的信息,但要直接回答您的问题: RLP编码不提供任何有关类型的信息。它只编码字符串(字节序列)和列表/字符串。如何解释这些字符串(字节序列)取决于应用程序。

票数 3
EN

Ethereum用户

发布于 2018-01-01 20:55:57

RLP编码定义如下:

  • 对于值在[0x00, 0x7f]范围内的单个字节,该字节是它自己的RLP编码。
  • 否则,如果字符串长度为0-55字节,则RLP编码由一个值为0x80的字节加上字符串的长度与字符串后面的字符串组成。因此,第一个字节的范围是[0x80, 0xb7]
  • 如果一个字符串的长度超过55个字节,则RLP编码由一个值为0xb7的字节加上以二进制形式表示的字符串长度的字节长度,然后是字符串的长度,然后是字符串的长度。例如,长度为-1024的字符串将被编码为\xb9\x04\x00,后面跟着字符串。因此,第一个字节的范围是[0xb8, 0xbf]
  • 如果一个列表的总有效载荷(即所有被RLP编码的项的合并长度)为0-55字节,则RLP编码由一个值为0xc0的字节加上列表的长度,然后连接这些项的RLP编码。因此,第一个字节的范围是[0xc0, 0xf7]
  • 如果列表的总有效载荷超过55个字节,则RLP编码由一个字节组成,值为0xf7,加上二进制形式的有效负载长度的字节长度,然后是有效负载长度,然后是项的RLP编码连接。因此,第一个字节的范围是[0xf8, 0xff]

因此,回答您的问题:只需查看数据的第一个字节,并使用上面的信息。

82 7ab7

RLP wiki

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/34865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档