首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将x的uint8s存储在byte32中?

如何将x的uint8s存储在byte32中?
EN

Ethereum用户
提问于 2018-02-05 02:30:46
回答 1查看 224关注 0票数 0

我试图存储一个uint8阵列,但它的气体效率不高。这是我目前存储东西的解决方案:

uint8[5] public VALUES = [10, 11, 12, 13, 14];

问题是,我将有大约40个这样的VALUE数组,如果我在Remix中测试它,我甚至不能开始这个契约(我等待初始化的时间已经几分钟了,它没有发生,所以我假设这是非常低效率的)。

我计划的下一个解决方案是将值存储在一个字符串中:

string public VALUES = "1011121314";

然后通过获取数字的索引ii+1来检索数字,并使用parseInt(string)获取数字。但我不太确定这样做的效率。

因此,既然我听说过组装在坚实性范围内是非常有效的,我想知道是否有一种方法可以将多个uint8值存储在更大的数据格式中,比如byte32?我目前的用例是5个uint8值,所以可能只需要byte5?此外,我将如何检索这些值?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2018-02-05 03:26:43

将5个uint8值组织在一个结构中。在编译契约时,确保打开了优化。由于存储槽是32个字节,编译器将自动将您的uint8s压缩到存储中,以达到最大的气体效率。

票数 3
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/38554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档