「アスキーコード」と「16進数」と「10進数」と「変数のデータ」という全く別の者たちがあってそれぞれの間を変換する、とか考えてないでしょうか。
変数のデータ(数値)があって、それをどのように表示するか、その表し方が「10進数」、「16進数」だったりして、数値の意味が「アスキーコード(あるいは他の文字コード)」であったり何らかの数であったりするだけです。
なので、
下記のアスキーコードを16進データとして加算し、
これは単に「2つの数値を加算」するということ。
加算した結果を16進数としてアスキーコード並びに変換(つまり「数字」にする)し、その一文字ずつの値(別にアスキーコードは16進数で表記するという決まりもない)をそれぞれ表示する、というのがお題ということでしょう。
C
1 int a=55; //0x37と書いても'7'と書いても同じこと
2 int b=55;
3 char sum[10];//一応intが4byteの場合考えられる最大値分
4 sprintf(sum, "%02X",a+b);//もし結果が0x10以下だったら16^1の位は0とする
とすれば、
sum[0]とsum[1]にそれぞれ'6'すなわち54あるいは0x36と'E'すなわち69あるいは0x45が得られるでしょう。16進数で表示したいなら、
printf("%x %x",sum[0],sum[1]);
とすればよいのでは。