That seems a little confused to me: an unsigned char buffer with two elements can't hold a hex code in the format "0x0a" since that is four characters.
If you mean that there is a value in the two unsigned chars that equates to the hex value 0A, and that it has a range between 0000 and FFFF hex, then you need to do this:
int i = ((int) INBuffer[0] & 0xFF) + (((int) INBuffer[1] << 8) & 0xFF00);
(The ANDs are there to prevent sign extentions, which shouldn't happen anyway) You may need to swap round the array indexes depending on your data format: big- or little-endian
If you mean that INBuffer contains two bytes which are '0' and 'A' respectively, then you need to copy them to a character array big enough to hold three bytes, and make it a null terminated string:
unsigned char data[3];
data[0] = INBuffer[0];
data[1] = INBuffer[1];
data[2] = '\0';
You can then use that to convert it to a int:
char * pEnd;
long int i = strtol(data, &pEnd, 16);