Change the function argument from signed to unsigned and see it printf handles prints the values correctly. I.E. static void print_packet(unsigned char *s, int len) ... -joe On 2/25/06, Umamaheswararao Karyampudi wrote: > > Hi, > I am using QEMU in one of my research projects. I > landed in a problem where I see bogus numbers being > printed when I printed the packet/each word that is > received from ne2000. > > In ne2000_receive(), I copied the packet received to a > static char [] and printed the packet using > static void print_packet(char *s, int len) > { > int i,j; > for (i=0;i if (i%20 == 0) > printf("\n"); > printf("%02x ", s[i]); > } > printf("\n"); > } > And some bytes it prints as fffffffff > instead of just the last byte. > For eg: > 52 54 00 12 34 56 00 ffffffff 4f 0a 46 05 08 00 45 00 > 00 ffffff80 00 00 > 40 00 40 01 ffffffbc 2b ffffffc0 ffffffa8 fffffffe > fffffffe ffffffc0 ffffffa8 ff > > Similarly in ne2000_asic_ioport_read(), I print each > word that is read from NetDriverState.s->mem using the > following - > printf("\n %02x %02x", (char)(ret &0xff), (char) ( > (ret >> 8) && 0xff)); > And occasionally I see the 4 bytes printed instead of > 1 byte for each value. > > Any reason why it happens? Also, > ne2000_asic_ioport_read(), reads 6 bytes before > reading actual packet? I can think of 4 bytes for CRC > but not for the remaining 2 bytes - eg - If pak is - > 52 54 00 12 34 56 00 ffffffff 4f 0a 46 05 08 00 45 00 > 00 ffffff80 00 00 > 40 00 40 01 ffffffbc 2b > In asic_ioport_read() - > rdw 01 59 > rdw 92 00 > rdw 52 54 > rdw 52 54 > rdw 00 12 > rdw 34 56 > > Anyhelp is greatly appreciated. > > Thanks > Uma > > > __________________________________________________ > Do You Yahoo!? > Tired of spam? Yahoo! Mail has the best spam protection around > http://mail.yahoo.com > > > _______________________________________________ > Qemu-devel mailing list > Qemu-devel@nongnu.org > http://lists.nongnu.org/mailman/listinfo/qemu-devel >