pengfei wu
/
ESP8266Program
For test
itoas.cpp@6:a8cf39c768c4, 2015-01-30 (annotated)
- 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?
User | Revision | Line number | New 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 | } |