ensure UTF decoder promotes bytes to uint32_t before left shifting