Rlp
RLP 乙太坊解碼
你好!
我有一些數據,像這樣( 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
.