For test

Dependencies:   mbed

Committer:
shennongmin
Date:
Fri Jan 30 15:02:02 2015 +0000
Revision:
6:a8cf39c768c4
Transplant String Class into mbed

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shennongmin 6:a8cf39c768c4 1 #include "itoas.h"
shennongmin 6:a8cf39c768c4 2
shennongmin 6:a8cf39c768c4 3 char* ltoa( long value, char *string, int radix )
shennongmin 6:a8cf39c768c4 4 {
shennongmin 6:a8cf39c768c4 5 char tmp[33];
shennongmin 6:a8cf39c768c4 6 char *tp = tmp;
shennongmin 6:a8cf39c768c4 7 long i;
shennongmin 6:a8cf39c768c4 8 unsigned long v;
shennongmin 6:a8cf39c768c4 9 int sign;
shennongmin 6:a8cf39c768c4 10 char *sp;
shennongmin 6:a8cf39c768c4 11 if ( string == NULL )
shennongmin 6:a8cf39c768c4 12 {
shennongmin 6:a8cf39c768c4 13 return 0 ;
shennongmin 6:a8cf39c768c4 14 }
shennongmin 6:a8cf39c768c4 15 if (radix > 36 || radix <= 1)
shennongmin 6:a8cf39c768c4 16 {
shennongmin 6:a8cf39c768c4 17 return 0 ;
shennongmin 6:a8cf39c768c4 18 }
shennongmin 6:a8cf39c768c4 19 sign = (radix == 10 && value < 0);
shennongmin 6:a8cf39c768c4 20 if (sign)
shennongmin 6:a8cf39c768c4 21 {
shennongmin 6:a8cf39c768c4 22 v = -value;
shennongmin 6:a8cf39c768c4 23 }
shennongmin 6:a8cf39c768c4 24 else
shennongmin 6:a8cf39c768c4 25 {
shennongmin 6:a8cf39c768c4 26 v = (unsigned long)value;
shennongmin 6:a8cf39c768c4 27 }
shennongmin 6:a8cf39c768c4 28 while (v || tp == tmp)
shennongmin 6:a8cf39c768c4 29 {
shennongmin 6:a8cf39c768c4 30 i = v % radix;
shennongmin 6:a8cf39c768c4 31 v = v / radix;
shennongmin 6:a8cf39c768c4 32 if (i < 10)
shennongmin 6:a8cf39c768c4 33 *tp++ = i+'0';
shennongmin 6:a8cf39c768c4 34 else
shennongmin 6:a8cf39c768c4 35 *tp++ = i + 'a' - 10;
shennongmin 6:a8cf39c768c4 36 }
shennongmin 6:a8cf39c768c4 37 sp = string;
shennongmin 6:a8cf39c768c4 38 if (sign)
shennongmin 6:a8cf39c768c4 39 *sp++ = '-';
shennongmin 6:a8cf39c768c4 40 while (tp > tmp)
shennongmin 6:a8cf39c768c4 41 *sp++ = *--tp;
shennongmin 6:a8cf39c768c4 42 *sp = 0;
shennongmin 6:a8cf39c768c4 43 return string;
shennongmin 6:a8cf39c768c4 44 }
shennongmin 6:a8cf39c768c4 45
shennongmin 6:a8cf39c768c4 46 char* ultoa( unsigned long value, char *string, int radix )
shennongmin 6:a8cf39c768c4 47 {
shennongmin 6:a8cf39c768c4 48 char tmp[33];
shennongmin 6:a8cf39c768c4 49 char *tp = tmp;
shennongmin 6:a8cf39c768c4 50 long i;
shennongmin 6:a8cf39c768c4 51 unsigned long v = value;
shennongmin 6:a8cf39c768c4 52 char *sp;
shennongmin 6:a8cf39c768c4 53 if ( string == NULL )
shennongmin 6:a8cf39c768c4 54 {
shennongmin 6:a8cf39c768c4 55 return 0;
shennongmin 6:a8cf39c768c4 56 }
shennongmin 6:a8cf39c768c4 57 if (radix > 36 || radix <= 1)
shennongmin 6:a8cf39c768c4 58 {
shennongmin 6:a8cf39c768c4 59 return 0;
shennongmin 6:a8cf39c768c4 60 }
shennongmin 6:a8cf39c768c4 61
shennongmin 6:a8cf39c768c4 62 while (v || tp == tmp)
shennongmin 6:a8cf39c768c4 63 {
shennongmin 6:a8cf39c768c4 64 i = v % radix;
shennongmin 6:a8cf39c768c4 65 v = v / radix;
shennongmin 6:a8cf39c768c4 66 if (i < 10)
shennongmin 6:a8cf39c768c4 67 *tp++ = i+'0';
shennongmin 6:a8cf39c768c4 68 else
shennongmin 6:a8cf39c768c4 69 *tp++ = i + 'a' - 10;
shennongmin 6:a8cf39c768c4 70 }
shennongmin 6:a8cf39c768c4 71 sp = string;
shennongmin 6:a8cf39c768c4 72
shennongmin 6:a8cf39c768c4 73 while (tp > tmp)
shennongmin 6:a8cf39c768c4 74 *sp++ = *--tp;
shennongmin 6:a8cf39c768c4 75 *sp = 0;
shennongmin 6:a8cf39c768c4 76 return string;
shennongmin 6:a8cf39c768c4 77 }
shennongmin 6:a8cf39c768c4 78
shennongmin 6:a8cf39c768c4 79
shennongmin 6:a8cf39c768c4 80 char* itoa( int value, char *string, int radix )
shennongmin 6:a8cf39c768c4 81 {
shennongmin 6:a8cf39c768c4 82 return ltoa( value, string, radix ) ;
shennongmin 6:a8cf39c768c4 83 }
shennongmin 6:a8cf39c768c4 84
shennongmin 6:a8cf39c768c4 85 char* utoa( unsigned long value, char *string, int radix )
shennongmin 6:a8cf39c768c4 86 {
shennongmin 6:a8cf39c768c4 87 return ultoa( value, string, radix ) ;
shennongmin 6:a8cf39c768c4 88 }