Можно создать другой массив, касательно вашего ответа в data могут быть другие данные, например 0x1E, 0xEB, 0xBD, 0xD7, 0x70, 0x0, 0x0, 0x0 и тогда на выходе должно быть 0xEE, 0xBB, 0xDD, 0x77 . Отвечу на вопрос что за данные: Это код ключа Cyfral (Не Dallas, оригинальный формат) он имеет длину 36 бит (вместе со стартовой посылкой (1))
Язык Arduino С++ подобный, поэтому, скорее всего можно использовать указатели в нём, как массивы.
Можно использовать вместо обычного массива указатель, тогда просто
int* data = new int[8]{1,2,3...8};
delete[] data;
data = new int[4]{1,2,3,4};
Возможно, в нём не будет операторов new и delete, как в c++, но могут быть методы malloc и free, как в си.
Если и их нет, то, скорее всего, нужно просто обходиться массивом фиксированного размера и просто при необходимости не допускать использование "обрезанной" части массива.