I don't understand how you got any result at all. Your format specifiers are completely wrong (hint: they start with a percent sign). The line: HEXStr+2*sizeof(char); does nothing at all.
Code:
#include <stdio.h>
int main() {
int i, n;
char *HEXStr = "A4505D0B0F6AEDAA";
unsigned char tmpByte[9];
char backHex[17];
for(i = 0; i < 8; i++) {
sscanf(HEXStr+2*i, "%2X", &n);
tmpByte[i] = (char)n;
}
for(i = 0; i < 8; i++)
sprintf(backHex+2*i, "%02X", tmpByte[i]);
backHex[16] = '\0';
printf("%s\n", backHex);
return 0;
}