Solidity. Смарт контракты и аудит
2.63K subscribers
246 photos
7 videos
18 files
555 links
Обучение Solidity. Уроки, аудит, разбор кода и популярных сервисов
Download Telegram
Сдвиги / смещение

Прикольную штуку сейчас в чате по 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