Rlp

RLP 乙太坊解碼

  • April 17, 2018

你好!

我有一些數據,像這樣( 827ab7 ),編碼 RLP。

我怎麼知道,它是什麼(字元串、列表或整數)?

另一個答案提供了有用的資訊,但要直接回答您的問題:RLP 編碼不提供有關類型的任何資訊。它只編碼字元串(字節序列)和列表/字元串列表。如何解釋這些字元串(字節序列)取決於應用程序。

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 維基


引用自:https://ethereum.stackexchange.com/questions/34865