Assembly
為什麼 mstore 在這裡不起作用?(元件)
function debug() returns (bytes) { bytes memory ret = new bytes(6); bytes memory word = new bytes(6); word = hex"61626f757400"; assembly { mstore(add(ret, 32), word) } return ret; }
返回 0x000000000000,期望的結果返回 0x61626f757400
請注意字節數組的長度
ret
在記憶體中的位置。與 相同,所以當你這樣做時,你實際上是在數組中數據的開頭將數組長度的位置儲存在記憶體中。這是您嘗試執行的正確版本:ret``word``mstore(add(ret, 32), word)``word``ret
function debug() view returns (bytes) { bytes memory ret = new bytes(6); bytes memory word = new bytes(6); word = hex"61626f757400"; assembly { mstore(add(ret, 32), mload(add(word, 32))) } return ret; }