unsigned char e' un tipo di dato, hex e' una rappresentazione.

Stai facendo confusione perche' le due cose non sono una in contrasto con l'altra e non sono legate ...

Le operazioni le puoi fare tranquillamente con il valore passato come unsigned char.