// print 32bit unsigned int as hex void printuhex(uint32_t val){ addtobuf("0x"); uint8_t *ptr = (uint8_t*)&val + 3; int8_t i, j; for(i = 0; i < 4; ++i, --ptr){ for(j = 1; j > -1; --j){ uint8_t half = (*ptr >> (4*j)) & 0x0f; if(half < 10) bufputchar(half + '0'); else bufputchar(half - 10 + 'a'); } } } // print 32bit unsigned int void printu(uint32_t val){ char buf[11], *bufptr = &buf[10]; *bufptr = 0; if(!val){ *(--bufptr) = '0'; }else{ while(val){ register uint32_t o = val; val /= 10; *(--bufptr) = (o - 10*val) + '0'; } } addtobuf(bufptr); } void printi(int32_t val){ if(val < 0){ val = -val; bufputchar('-'); } printu((uint32_t)val); }