Non puoi usare la atoi perchè non hai a disposizione delle stringhe terminate da null ma dei semplici char.
Dato che si tratta di semplici char, puoi usare l'operatore bitwise and
printf("primo valore: %d, secondo valore: %d\n", (buf & 0xF), (buf2 & 0xF));