l'utilisation de printf pour imprimer chaîne de caractères au format hex, déformée résultats

Je veux imprimer chaîne de caractères au format hex,

sur Une machine , quelque chose comme

ori_mesg = gen_rdm_bytestream (1400,seed)
sendto(machine B, ori_mesg, len(mesg))

sur la machine B

 recvfrom(machine A, mesg)

mesg_check = gen_rdm_bytestream (1400, seed)

            for(i=0;i<20;i++){
                    printf("%02x ", *(mesg+i)& 0xFF);
            }
            printf("\n");
            for(i=0;i<20;i++){
                    printf("%02x ", *(mesg_check+i));
            }
            printf("\n");

seed varie entre 1, 2 3....

les octets de génération de la fonction est:

u_char *gen_rdm_bytestream (size_t num_bytes, unsigned int seed)
{
    u_char *stream = malloc (num_bytes+4);
    size_t i;

    u_int16_t seq = seed;
    seq = htons(seq);
    u_int16_t tail = num_bytes;
    tail = htons(tail);
    memcpy(stream, &seq, sizeof(seq));
    srand(seed);
    for (i = 3; i < num_bytes+2; i++){
            stream[i] = rand ();
            }
    memcpy(stream+num_bytes+2, &tail, sizeof(tail));

  return stream;
}

mais j'ai obtenu des résultats de printf comme:

00 01 00 67 c6 69 73 51 ff 4a ec 29 cd ba ab f2 fb e3 46 7c 
00 01 00 67 ffffffc6 69 73 51 ffffffff 4a ffffffec 29 ffffffcd ffffffba ffffffab fffffff2 fffffffb ffffffe3 46 7c

ou

00 02 88 fa 7f 44 4f d5 d2 00 2d 29 4b 96 c3 4d c5 7d 29 7e 
00 02 00 fffffffa 7f 44 4f ffffffd5 ffffffd2 00 2d 29 4b ffffff96 ffffffc3 4d ffffffc5 7d 29 7e 

pourquoi sont-ils si nombreux fffff pour mesg_check?

sont là toutes les raisons possibles de ce phénomène?
merci!

Ce n' mesg et mesg_check ressembler?
serait mesg être un char* ou char [], par hasard?
Essayer de mettre un space dans le printf spécificateur. C'est à dire, "%2,2 x " Vous avez obtenu le plus grand nombre de mettre ensemble et négatifs sont signe étendu.
Vous avez accepté la réponse, mais vous n'avez pas encore montré comment mesg et mesg_check sont définies -- pas comment vous les initialiser, mais ce que leurs déclarations. Nous montrant que pourrait être utile pour les futurs lecteurs de cette question.
Double Possible de Pourquoi ne printf pas imprimer juste un octet lors de l'impression hex?

OriginalL'auteur misteryes | 2013-04-04