Доступ к элементам памяти байтов в солидности - PullRequest
0 голосов
/ 07 мая 2018

У меня проблемы с использованием байтов в надёжности. мой код:

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

если я выполню этот код, я не получу никакого журнала. в противном случае, если я удалю строку «aa [0] = 2», я получу журнал. Я не уверен, в чем проблема, но кажется, что есть проблема с доступом к элементам байтов. Кто-нибудь сталкивался с такими проблемами раньше? пожалуйста, помогите мне решить это. Благодарю. Кстати, когда я помещаю этот код в библиотеку, он работает нормально.

1 Ответ

0 голосов
/ 07 мая 2018

Это не регистрация, потому что ваша транзакция не удалась. Последняя строка вашей функции (aa[0] = 2;) пытается установить значение динамического массива в памяти, что недопустимо. Вам нужно либо изменить aa на переменную хранения, либо объявить размер массива следующим образом:

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