如果一个字符串的长度超过55个字节,则RLP编码由一个值为0xb7的字节加上以二进制形式表示的字符串长度的字节长度,然后是字符串的长度,然后是字符串的长度。例如,长度-1024字符串将编码为\xb9\x04\x00,后面跟着该字符串。因此,第一个字节的范围是0xb8,0xbf。
首先,在python3中“狗”是如何超过55个字节的?我测试‘狗’和python3显示它是56个字节,这样我就可以理解‘狗’是0x83。有趣的是,cat&dog仍然是56个字节。
第二件事是,在python3中,len(‘string.’)= 1024显示1080字节。我不知道它是如何编码到\xb9\x04\x00的。
你能解释一下它怎么变成\xb9 9\x04\x00吗?
发布于 2018-05-15 18:53:17
“狗”是三个字节:"d“、"o”和"g“。不知道用Python做什么,我无法解释为什么您会看到不同的东西。
关于为什么长度为1024的东西以\xb9\x04\x00开头,您引用的页面部分解释了这一点:
因此,0xb94000或\xb9\x40\x00是长度-1024字符串的正确前缀。
https://ethereum.stackexchange.com/questions/48580
复制相似问题