Se fai
p1++
e
p1+=2;
nel ciclo, il puntatore si sposta di 3 posizioni invece che di 2 ...
Puoi semplicemente togliere il primo incremento e far diventare la riga
sscanf(p1, "%02X", d++);
Ma se tu avessi fatto un minimo di debug, l'avresti notato subito ...