先生、宿題じゃないけど質問です!

文字列をunsigned char型に「数値として」格納したくて下のようなプログラム書いたのですが
無駄が多い気がするので、よろしければご指導おねがいします!言語はC/C++です!

char num[]="ff"; //入れたい数値。
char head[]="0x";
strcat(head,num);

unsigned long numul=strtoul(head,NULL,NULL);
unsigned char numuc=(unsigned char)numul;