以固定方式访问内存字节的元素

时间:2018-05-07 09:16:30

标签: solidity

我在使用字节时遇到麻烦。 我的代码:

function get() public{
    string memory sl = "asddsa";
    bytes memory aa = bytes(sl);
    log("123");
    aa[0] = 2;
}

如果我运行此代码,我将收到没有日志。否则,如果我删除“aa [0] = 2”行,我将收到日志。 我不确定问题是什么,但似乎访问字节元素时出现问题。 以前有人遇到过这种问题吗?请帮我解决一下。谢谢。 顺便说一句,当我把这些代码放入一个库时,运行正常。

1 个答案:

答案 0 :(得分:0)

它没有记录,因为您的交易失败了。函数的最后一行(aa[0] = 2;)正在尝试将值设置为内存动态数组,这是不允许的。您需要将aa更改为存储变量,或者像这样声明数组的大小:

function get() public{
    string memory sl = "asddsa";
    byte[] memory aa = new byte[](bytes(sl).length);
    log("123");
    aa[0] = 2;
}