if you look at the definition of setValue() if takes a pointer to the start of your data and the data length. it does not care what the data represent, it will just know that you have n bytes of relevant data at that memory address
if you have int16_t gyroZ_int; then use ....->setValue((uint8_t*) &gyroZ_int, sizeof(int16_t)); // sizeof int16_t is 2 but more readable the expression &gyroZ_int means "the address of gyroZ_int", which we then cast into a pointer to bytes with (uint8_t*) as this is what the function expects