分享百科

动态数组

本文讨论了在EBM StorageStot中动态数组结构体的数据存储方式。以一个名为point的结构体为例,其包含三个字段:uint256类型的x和两个uint128类型的y和z。动态数组R存储多个point结构体。数据存储时,动态数组的每个元素占用两个槽位,计算元素槽位的方法是:取动态数组声明槽位的Ketschak 256值,加上元素索引乘以结构体大小。具体来说,uint256占用一个槽位,两个uint128各占用16字节,因此y和z将存储在第二个槽位。通过汇编语言读取数据时,动态数组的长度存储在声明槽位,x、y和z的值则分别存储在相应的槽位中。通过特定的计算公式,可以访问和提取这些值。最终,示例代码展示了如何获取动态数组中各个元素的值。
421
0
0
2025-01-27 08:58
本视频介绍了如何定位复杂数据结构的存储槽,特别是动态数组的映射。假设每个动态数组元素占32字节,以一个从地址到uint256的映射为例,讲解了如何计算存储槽。首先,映射中值的存储槽通过对映射声明的槽和键进行Keccak-256哈希计算得出。对于动态数组,元素的存储槽则是映射槽加上元素索引的哈希值。视频中还展示了如何通过汇编代码将数据存入映射,并获取动态数组的值和长度。通过实例,演示了如何获取特定地址的动态数组元素及其长度,确保了对存储槽计算规则的理解。
436
0
0
2025-01-27 08:58
登链社区