ref: 12c9d2fc728b51aa1eb9a70d0d331eb9464912d9
dir: /3rd/mp/u16.c/
#include "platform.h" #include "mp.h" #define between(x,min,max) (((min-1-x) & (x-max-1))>>8) int enc16chr(int o) { int c; c = between(o, 0, 9) & ('0'+o); c |= between(o, 10, 15) & ('A'+(o-10)); return c; } mpdigit dec16chr(int c) { int o; o = between(c, '0', '9') & (1+(c-'0')); o |= between(c, 'A', 'F') & (1+10+(c-'A')); o |= between(c, 'a', 'f') & (1+10+(c-'a')); return o-1; }