static int integerprint(char **s, int n, unsigned base, int min, int zpad, int upper) { char buf[32]; int i=32, digit, len=0; assert(base>=2 && base < 36); if (min>32) min=32; if (n==0) { for (i=1; i<min; i++) len += charprint(s, zpad ? '0' : ' '); len += charprint(s, '0'); return len; } if (n<0) { len += charprint(s, '-'); n *= -1; } while (n!=0) { digit = n%base; n /= base; if (digit<0) digit *= -1; buf[--i] = digittoascii(digit, upper); } while (i>32-min) buf[--i] = zpad ? '0' : ' '; len += mcharprint(s, &buf[i], 32-i); return len; }
uint16_t convert(uint16_t RAW_VALUE) { return digittoascii(RAW_VALUE/16) + 256*digittoascii(RAW_VALUE%16); }