-char* ustoa(unsigned short a, char* buffer, uint8_t radix){
- return ultoa((unsigned long)a, buffer, radix);
+char* ustoa(unsigned short value, char* buffer, uint8_t radix){
+ if((radix>36) || (radix<2) || (buffer==NULL)){
+ return NULL;
+ }
+ unsigned length=(unsigned)-1;
+ uint8_t x;
+ char c;
+ do{
+ x = value%radix;
+ value /= radix;
+ if(x<10){
+ c = x+ '0';
+ }else{
+ c = x+ 'a';
+ }
+ buffer[++length] = c;
+ }while(value);
+ buffer[length+1]='\0';
+ unsigned idx=0;
+ while(idx+1<length){
+ c = buffer[idx];
+ buffer[idx++] = buffer[length];
+ buffer[length--] = c;
+ }
+ return buffer;