printf char como hexadecimal em c

Espero ouput algo como\9b\d9\c0... do código abaixo, mas estou recebendo\ffffff9b\ffffffd9\ffffffc0\ffffff9d\53\ffffffa9\fffffff4\49\ffffffb0\ffff ffef\ffffffd9\ffffffaa\61\fffffff7\54\fffffffb. Eu adicionei a conversão explícita ao char, mas não tem efeito. Oque esta acontecendo aqui?

typdef struct PT {
    // ... omitted
    char GUID[16];
} PT;
PT *pt;
// ... omitted
int i;
for(i=0;i<16;i++) {
    printf("\\%02x", (char) pt->GUID[i]);
}

Editar: apenas transmitindo para(unsigned char) trabalhou para mim. O compilador cospe avisos em mim ao usar%02hhx (gcc -Wall)(unsigned int) não teve efeito.

questionAnswers(5)

yourAnswerToTheQuestion