don't rely on unsigned char on arm