uint8_t to int8_t conversion might have altered the value. added static
assertion to check this at compile time