In the Ethereum wiki RLP page,
If a string is more than 55 bytes long, the RLP encoding consists of a single byte with value 0xb7 plus the length in bytes of the length of the string in binary form, followed by the length of the string, followed by the string. For example, a length-1024 string would be encoded as \xb9\x04\x00 followed by the string. The range of the first byte is thus [0xb8, 0xbf].
First of all, how 'dog' is over 55 bytes in python3?
I test 'dog' and python 3 show me it is 56 bytes so I can understand 'dog' is 0x83
. The funny thing for me is cat&dog
is still 56 bytes.
The second thing is, in python3, len('string...') = 1024 shows 1080 bytes. I have no idea how it encoded to \xb9\x04\x00.
Could you explain how it becomes \xb9\x04\x00?