Arduino Core API Library besed on mbed platform.
Dependents: WeeESP8266 ESP8266_moj
itoas.cpp@1:2179048af332, 2015-02-06 (annotated)
- Committer:
- itead
- Date:
- Fri Feb 06 13:13:50 2015 +0000
- Revision:
- 1:2179048af332
- Parent:
- 0:5ebc917ebd09
Change Print::write as public
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
itead | 0:5ebc917ebd09 | 1 | #include "itoas.h" |
itead | 0:5ebc917ebd09 | 2 | |
itead | 0:5ebc917ebd09 | 3 | char* ltoa( long value, char *string, int radix ) |
itead | 0:5ebc917ebd09 | 4 | { |
itead | 0:5ebc917ebd09 | 5 | char tmp[33]; |
itead | 0:5ebc917ebd09 | 6 | char *tp = tmp; |
itead | 0:5ebc917ebd09 | 7 | long i; |
itead | 0:5ebc917ebd09 | 8 | unsigned long v; |
itead | 0:5ebc917ebd09 | 9 | int sign; |
itead | 0:5ebc917ebd09 | 10 | char *sp; |
itead | 0:5ebc917ebd09 | 11 | if ( string == NULL ) |
itead | 0:5ebc917ebd09 | 12 | { |
itead | 0:5ebc917ebd09 | 13 | return 0 ; |
itead | 0:5ebc917ebd09 | 14 | } |
itead | 0:5ebc917ebd09 | 15 | if (radix > 36 || radix <= 1) |
itead | 0:5ebc917ebd09 | 16 | { |
itead | 0:5ebc917ebd09 | 17 | return 0 ; |
itead | 0:5ebc917ebd09 | 18 | } |
itead | 0:5ebc917ebd09 | 19 | sign = (radix == 10 && value < 0); |
itead | 0:5ebc917ebd09 | 20 | if (sign) |
itead | 0:5ebc917ebd09 | 21 | { |
itead | 0:5ebc917ebd09 | 22 | v = -value; |
itead | 0:5ebc917ebd09 | 23 | } |
itead | 0:5ebc917ebd09 | 24 | else |
itead | 0:5ebc917ebd09 | 25 | { |
itead | 0:5ebc917ebd09 | 26 | v = (unsigned long)value; |
itead | 0:5ebc917ebd09 | 27 | } |
itead | 0:5ebc917ebd09 | 28 | while (v || tp == tmp) |
itead | 0:5ebc917ebd09 | 29 | { |
itead | 0:5ebc917ebd09 | 30 | i = v % radix; |
itead | 0:5ebc917ebd09 | 31 | v = v / radix; |
itead | 0:5ebc917ebd09 | 32 | if (i < 10) |
itead | 0:5ebc917ebd09 | 33 | *tp++ = i+'0'; |
itead | 0:5ebc917ebd09 | 34 | else |
itead | 0:5ebc917ebd09 | 35 | *tp++ = i + 'a' - 10; |
itead | 0:5ebc917ebd09 | 36 | } |
itead | 0:5ebc917ebd09 | 37 | sp = string; |
itead | 0:5ebc917ebd09 | 38 | if (sign) |
itead | 0:5ebc917ebd09 | 39 | *sp++ = '-'; |
itead | 0:5ebc917ebd09 | 40 | while (tp > tmp) |
itead | 0:5ebc917ebd09 | 41 | *sp++ = *--tp; |
itead | 0:5ebc917ebd09 | 42 | *sp = 0; |
itead | 0:5ebc917ebd09 | 43 | return string; |
itead | 0:5ebc917ebd09 | 44 | } |
itead | 0:5ebc917ebd09 | 45 | |
itead | 0:5ebc917ebd09 | 46 | char* ultoa( unsigned long value, char *string, int radix ) |
itead | 0:5ebc917ebd09 | 47 | { |
itead | 0:5ebc917ebd09 | 48 | char tmp[33]; |
itead | 0:5ebc917ebd09 | 49 | char *tp = tmp; |
itead | 0:5ebc917ebd09 | 50 | long i; |
itead | 0:5ebc917ebd09 | 51 | unsigned long v = value; |
itead | 0:5ebc917ebd09 | 52 | char *sp; |
itead | 0:5ebc917ebd09 | 53 | if ( string == NULL ) |
itead | 0:5ebc917ebd09 | 54 | { |
itead | 0:5ebc917ebd09 | 55 | return 0; |
itead | 0:5ebc917ebd09 | 56 | } |
itead | 0:5ebc917ebd09 | 57 | if (radix > 36 || radix <= 1) |
itead | 0:5ebc917ebd09 | 58 | { |
itead | 0:5ebc917ebd09 | 59 | return 0; |
itead | 0:5ebc917ebd09 | 60 | } |
itead | 0:5ebc917ebd09 | 61 | |
itead | 0:5ebc917ebd09 | 62 | while (v || tp == tmp) |
itead | 0:5ebc917ebd09 | 63 | { |
itead | 0:5ebc917ebd09 | 64 | i = v % radix; |
itead | 0:5ebc917ebd09 | 65 | v = v / radix; |
itead | 0:5ebc917ebd09 | 66 | if (i < 10) |
itead | 0:5ebc917ebd09 | 67 | *tp++ = i+'0'; |
itead | 0:5ebc917ebd09 | 68 | else |
itead | 0:5ebc917ebd09 | 69 | *tp++ = i + 'a' - 10; |
itead | 0:5ebc917ebd09 | 70 | } |
itead | 0:5ebc917ebd09 | 71 | sp = string; |
itead | 0:5ebc917ebd09 | 72 | |
itead | 0:5ebc917ebd09 | 73 | while (tp > tmp) |
itead | 0:5ebc917ebd09 | 74 | *sp++ = *--tp; |
itead | 0:5ebc917ebd09 | 75 | *sp = 0; |
itead | 0:5ebc917ebd09 | 76 | return string; |
itead | 0:5ebc917ebd09 | 77 | } |
itead | 0:5ebc917ebd09 | 78 | |
itead | 0:5ebc917ebd09 | 79 | |
itead | 0:5ebc917ebd09 | 80 | char* itoa( int value, char *string, int radix ) |
itead | 0:5ebc917ebd09 | 81 | { |
itead | 0:5ebc917ebd09 | 82 | return ltoa( value, string, radix ) ; |
itead | 0:5ebc917ebd09 | 83 | } |
itead | 0:5ebc917ebd09 | 84 | |
itead | 0:5ebc917ebd09 | 85 | char* utoa( unsigned long value, char *string, int radix ) |
itead | 0:5ebc917ebd09 | 86 | { |
itead | 0:5ebc917ebd09 | 87 | return ultoa( value, string, radix ) ; |
itead | 0:5ebc917ebd09 | 88 | } |