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));