Сдвиги / смещение
Прикольную штуку сейчас в чате по Solidity встретил.
Задача
В общем, есть 4 переменных uint64 и нужно передать в функцию как одну uint256, а потом сдвигами их доставать.
Решение
Если вы помните урок про работу с памятью в Solidity, который можно посмотреть тут, то наверняка заметили, что есть, так называемые, сдвиги.
И вот, как эту задачу можно решить:
Сначала объединяете все переменные в одну uint256, а потом достаете значение так:
uint64 a1 = uint64(a);
uint64 a2 = uint64(a >> 64);
uint64 a3 = uint64(a >> 128);
uint64 a4 = uint64(a >> 192);
Круто, да?
#uint #memory #сдвиг #смещение
Прикольную штуку сейчас в чате по Solidity встретил.
Задача
В общем, есть 4 переменных uint64 и нужно передать в функцию как одну uint256, а потом сдвигами их доставать.
Решение
Если вы помните урок про работу с памятью в Solidity, который можно посмотреть тут, то наверняка заметили, что есть, так называемые, сдвиги.
И вот, как эту задачу можно решить:
Сначала объединяете все переменные в одну uint256, а потом достаете значение так:
uint64 a1 = uint64(a);
uint64 a2 = uint64(a >> 64);
uint64 a3 = uint64(a >> 128);
uint64 a4 = uint64(a >> 192);
Круто, да?
#uint #memory #сдвиг #смещение
👍1