#assembly #decode #solidity #encode #inline-assembly
Вопрос:
у меня есть короткий вопрос, касающийся хранения адресов в памяти встроенной сборки.
У меня есть пример, работающий для единиц измерения, но я не уверен, как использовать его с адресами. Например, я хочу хранить 4 единицы измерения и 4 адреса в одном байте.
Пример рабочего кодирования только для uints:
assembly {
let y := 0
mstore(0x20, _d)
mstore(0x18, _c)
mstore(0x10, _b)
mstore(0x8, _a)
x := mload(0x20)
}
}
и для расшифровки:
function decode(bytes32 x) internal pure returns (uint64 a, uint64 b, uint64 c, uint64 d) {
assembly {
d := x
mstore(0x18, x)
a := mload(0)
mstore(0x10, x)
b := mload(0)
mstore(0x8, x)
c := mload(0)
}
}
Спасибо за вашу помощь.