Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: TFT_Touch_botao_v1 TFT_Touch_exemplo5_git_touch TESTE_1 TFT_Touch_exemplo6_git_touch_button_3_
itoa.c@2:81364824d56a, 2021-05-11 (annotated)
- Committer:
- davidprentice
- Date:
- Tue May 11 16:24:13 2021 +0000
- Revision:
- 2:81364824d56a
- Parent:
- 0:5952bbaff1c6
add includes, typedef byte
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| davidprentice | 0:5952bbaff1c6 | 1 | /* |
| davidprentice | 0:5952bbaff1c6 | 2 | Copyright (c) 2011 Arduino. All right reserved. |
| davidprentice | 0:5952bbaff1c6 | 3 | |
| davidprentice | 0:5952bbaff1c6 | 4 | This library is free software; you can redistribute it and/or |
| davidprentice | 0:5952bbaff1c6 | 5 | modify it under the terms of the GNU Lesser General Public |
| davidprentice | 0:5952bbaff1c6 | 6 | License as published by the Free Software Foundation; either |
| davidprentice | 0:5952bbaff1c6 | 7 | version 2.1 of the License, or (at your option) any later version. |
| davidprentice | 0:5952bbaff1c6 | 8 | |
| davidprentice | 0:5952bbaff1c6 | 9 | This library is distributed in the hope that it will be useful, |
| davidprentice | 0:5952bbaff1c6 | 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| davidprentice | 0:5952bbaff1c6 | 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| davidprentice | 0:5952bbaff1c6 | 12 | See the GNU Lesser General Public License for more details. |
| davidprentice | 0:5952bbaff1c6 | 13 | |
| davidprentice | 0:5952bbaff1c6 | 14 | You should have received a copy of the GNU Lesser General Public |
| davidprentice | 0:5952bbaff1c6 | 15 | License along with this library; if not, write to the Free Software |
| davidprentice | 0:5952bbaff1c6 | 16 | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
| davidprentice | 0:5952bbaff1c6 | 17 | */ |
| davidprentice | 0:5952bbaff1c6 | 18 | |
| davidprentice | 0:5952bbaff1c6 | 19 | #include "itoa.h" |
| davidprentice | 0:5952bbaff1c6 | 20 | #include <string.h> |
| davidprentice | 0:5952bbaff1c6 | 21 | |
| davidprentice | 0:5952bbaff1c6 | 22 | #ifdef __cplusplus |
| davidprentice | 0:5952bbaff1c6 | 23 | extern "C" { |
| davidprentice | 0:5952bbaff1c6 | 24 | #endif // __cplusplus |
| davidprentice | 0:5952bbaff1c6 | 25 | |
| davidprentice | 0:5952bbaff1c6 | 26 | #if 0 |
| davidprentice | 0:5952bbaff1c6 | 27 | /* reverse: reverse string s in place */ |
| davidprentice | 0:5952bbaff1c6 | 28 | static void reverse(char s[]) |
| davidprentice | 0:5952bbaff1c6 | 29 | { |
| davidprentice | 0:5952bbaff1c6 | 30 | int i, j ; |
| davidprentice | 0:5952bbaff1c6 | 31 | char c ; |
| davidprentice | 0:5952bbaff1c6 | 32 | |
| davidprentice | 0:5952bbaff1c6 | 33 | for (i = 0, j = strlen(s) - 1 ; i < j ; i++, j--) { |
| davidprentice | 0:5952bbaff1c6 | 34 | c = s[i] ; |
| davidprentice | 0:5952bbaff1c6 | 35 | s[i] = s[j] ; |
| davidprentice | 0:5952bbaff1c6 | 36 | s[j] = c ; |
| davidprentice | 0:5952bbaff1c6 | 37 | } |
| davidprentice | 0:5952bbaff1c6 | 38 | } |
| davidprentice | 0:5952bbaff1c6 | 39 | |
| davidprentice | 0:5952bbaff1c6 | 40 | /* itoa: convert n to characters in s */ |
| davidprentice | 0:5952bbaff1c6 | 41 | extern void itoa(int n, char s[]) |
| davidprentice | 0:5952bbaff1c6 | 42 | { |
| davidprentice | 0:5952bbaff1c6 | 43 | int i, sign ; |
| davidprentice | 0:5952bbaff1c6 | 44 | |
| davidprentice | 0:5952bbaff1c6 | 45 | if ((sign = n) < 0) { /* record sign */ |
| davidprentice | 0:5952bbaff1c6 | 46 | n = -n; /* make n positive */ |
| davidprentice | 0:5952bbaff1c6 | 47 | } |
| davidprentice | 0:5952bbaff1c6 | 48 | |
| davidprentice | 0:5952bbaff1c6 | 49 | i = 0; |
| davidprentice | 0:5952bbaff1c6 | 50 | do { |
| davidprentice | 0:5952bbaff1c6 | 51 | /* generate digits in reverse order */ |
| davidprentice | 0:5952bbaff1c6 | 52 | s[i++] = n % 10 + '0'; /* get next digit */ |
| davidprentice | 0:5952bbaff1c6 | 53 | } while ((n /= 10) > 0) ; /* delete it */ |
| davidprentice | 0:5952bbaff1c6 | 54 | |
| davidprentice | 0:5952bbaff1c6 | 55 | if (sign < 0) { |
| davidprentice | 0:5952bbaff1c6 | 56 | s[i++] = '-'; |
| davidprentice | 0:5952bbaff1c6 | 57 | } |
| davidprentice | 0:5952bbaff1c6 | 58 | |
| davidprentice | 0:5952bbaff1c6 | 59 | s[i] = '\0'; |
| davidprentice | 0:5952bbaff1c6 | 60 | |
| davidprentice | 0:5952bbaff1c6 | 61 | reverse(s) ; |
| davidprentice | 0:5952bbaff1c6 | 62 | } |
| davidprentice | 0:5952bbaff1c6 | 63 | |
| davidprentice | 0:5952bbaff1c6 | 64 | #else |
| davidprentice | 0:5952bbaff1c6 | 65 | |
| davidprentice | 0:5952bbaff1c6 | 66 | extern char *itoa(int value, char *string, int radix) |
| davidprentice | 0:5952bbaff1c6 | 67 | { |
| davidprentice | 0:5952bbaff1c6 | 68 | return ltoa(value, string, radix) ; |
| davidprentice | 0:5952bbaff1c6 | 69 | } |
| davidprentice | 0:5952bbaff1c6 | 70 | |
| davidprentice | 0:5952bbaff1c6 | 71 | extern char *ltoa(long value, char *string, int radix) |
| davidprentice | 0:5952bbaff1c6 | 72 | { |
| davidprentice | 0:5952bbaff1c6 | 73 | char tmp[33]; |
| davidprentice | 0:5952bbaff1c6 | 74 | char *tp = tmp; |
| davidprentice | 0:5952bbaff1c6 | 75 | long i; |
| davidprentice | 0:5952bbaff1c6 | 76 | unsigned long v; |
| davidprentice | 0:5952bbaff1c6 | 77 | int sign; |
| davidprentice | 0:5952bbaff1c6 | 78 | char *sp; |
| davidprentice | 0:5952bbaff1c6 | 79 | |
| davidprentice | 0:5952bbaff1c6 | 80 | if (string == NULL) { |
| davidprentice | 0:5952bbaff1c6 | 81 | return 0 ; |
| davidprentice | 0:5952bbaff1c6 | 82 | } |
| davidprentice | 0:5952bbaff1c6 | 83 | |
| davidprentice | 0:5952bbaff1c6 | 84 | if (radix > 36 || radix <= 1) { |
| davidprentice | 0:5952bbaff1c6 | 85 | return 0 ; |
| davidprentice | 0:5952bbaff1c6 | 86 | } |
| davidprentice | 0:5952bbaff1c6 | 87 | |
| davidprentice | 0:5952bbaff1c6 | 88 | sign = (radix == 10 && value < 0); |
| davidprentice | 0:5952bbaff1c6 | 89 | if (sign) { |
| davidprentice | 0:5952bbaff1c6 | 90 | v = -value; |
| davidprentice | 0:5952bbaff1c6 | 91 | } else { |
| davidprentice | 0:5952bbaff1c6 | 92 | v = (unsigned long)value; |
| davidprentice | 0:5952bbaff1c6 | 93 | } |
| davidprentice | 0:5952bbaff1c6 | 94 | |
| davidprentice | 0:5952bbaff1c6 | 95 | while (v || tp == tmp) { |
| davidprentice | 0:5952bbaff1c6 | 96 | i = v % radix; |
| davidprentice | 0:5952bbaff1c6 | 97 | v = v / radix; |
| davidprentice | 0:5952bbaff1c6 | 98 | if (i < 10) { |
| davidprentice | 0:5952bbaff1c6 | 99 | *tp++ = i + '0'; |
| davidprentice | 0:5952bbaff1c6 | 100 | } else { |
| davidprentice | 0:5952bbaff1c6 | 101 | *tp++ = i + 'a' - 10; |
| davidprentice | 0:5952bbaff1c6 | 102 | } |
| davidprentice | 0:5952bbaff1c6 | 103 | } |
| davidprentice | 0:5952bbaff1c6 | 104 | |
| davidprentice | 0:5952bbaff1c6 | 105 | sp = string; |
| davidprentice | 0:5952bbaff1c6 | 106 | |
| davidprentice | 0:5952bbaff1c6 | 107 | if (sign) { |
| davidprentice | 0:5952bbaff1c6 | 108 | *sp++ = '-'; |
| davidprentice | 0:5952bbaff1c6 | 109 | } |
| davidprentice | 0:5952bbaff1c6 | 110 | while (tp > tmp) { |
| davidprentice | 0:5952bbaff1c6 | 111 | *sp++ = *--tp; |
| davidprentice | 0:5952bbaff1c6 | 112 | } |
| davidprentice | 0:5952bbaff1c6 | 113 | *sp = 0; |
| davidprentice | 0:5952bbaff1c6 | 114 | |
| davidprentice | 0:5952bbaff1c6 | 115 | return string; |
| davidprentice | 0:5952bbaff1c6 | 116 | } |
| davidprentice | 0:5952bbaff1c6 | 117 | #if __GNUC__ > 4 || (__GNUC__ == 4 && (__GNUC_MINOR__ > 9 || \ |
| davidprentice | 0:5952bbaff1c6 | 118 | (__GNUC_MINOR__ == 9 && __GNUC_PATCHLEVEL__ > 2))) |
| davidprentice | 0:5952bbaff1c6 | 119 | extern char *utoa(unsigned value, char *string, int radix) |
| davidprentice | 0:5952bbaff1c6 | 120 | #else |
| davidprentice | 0:5952bbaff1c6 | 121 | extern char *utoa(unsigned long value, char *string, int radix) |
| davidprentice | 0:5952bbaff1c6 | 122 | #endif |
| davidprentice | 0:5952bbaff1c6 | 123 | { |
| davidprentice | 0:5952bbaff1c6 | 124 | return ultoa(value, string, radix) ; |
| davidprentice | 0:5952bbaff1c6 | 125 | } |
| davidprentice | 0:5952bbaff1c6 | 126 | |
| davidprentice | 0:5952bbaff1c6 | 127 | extern char *ultoa(unsigned long value, char *string, int radix) |
| davidprentice | 0:5952bbaff1c6 | 128 | { |
| davidprentice | 0:5952bbaff1c6 | 129 | char tmp[33]; |
| davidprentice | 0:5952bbaff1c6 | 130 | char *tp = tmp; |
| davidprentice | 0:5952bbaff1c6 | 131 | long i; |
| davidprentice | 0:5952bbaff1c6 | 132 | unsigned long v = value; |
| davidprentice | 0:5952bbaff1c6 | 133 | char *sp; |
| davidprentice | 0:5952bbaff1c6 | 134 | |
| davidprentice | 0:5952bbaff1c6 | 135 | if (string == NULL) { |
| davidprentice | 0:5952bbaff1c6 | 136 | return 0; |
| davidprentice | 0:5952bbaff1c6 | 137 | } |
| davidprentice | 0:5952bbaff1c6 | 138 | |
| davidprentice | 0:5952bbaff1c6 | 139 | if (radix > 36 || radix <= 1) { |
| davidprentice | 0:5952bbaff1c6 | 140 | return 0; |
| davidprentice | 0:5952bbaff1c6 | 141 | } |
| davidprentice | 0:5952bbaff1c6 | 142 | |
| davidprentice | 0:5952bbaff1c6 | 143 | while (v || tp == tmp) { |
| davidprentice | 0:5952bbaff1c6 | 144 | i = v % radix; |
| davidprentice | 0:5952bbaff1c6 | 145 | v = v / radix; |
| davidprentice | 0:5952bbaff1c6 | 146 | if (i < 10) { |
| davidprentice | 0:5952bbaff1c6 | 147 | *tp++ = i + '0'; |
| davidprentice | 0:5952bbaff1c6 | 148 | } else { |
| davidprentice | 0:5952bbaff1c6 | 149 | *tp++ = i + 'a' - 10; |
| davidprentice | 0:5952bbaff1c6 | 150 | } |
| davidprentice | 0:5952bbaff1c6 | 151 | } |
| davidprentice | 0:5952bbaff1c6 | 152 | |
| davidprentice | 0:5952bbaff1c6 | 153 | sp = string; |
| davidprentice | 0:5952bbaff1c6 | 154 | |
| davidprentice | 0:5952bbaff1c6 | 155 | |
| davidprentice | 0:5952bbaff1c6 | 156 | while (tp > tmp) { |
| davidprentice | 0:5952bbaff1c6 | 157 | *sp++ = *--tp; |
| davidprentice | 0:5952bbaff1c6 | 158 | } |
| davidprentice | 0:5952bbaff1c6 | 159 | *sp = 0; |
| davidprentice | 0:5952bbaff1c6 | 160 | |
| davidprentice | 0:5952bbaff1c6 | 161 | return string; |
| davidprentice | 0:5952bbaff1c6 | 162 | } |
| davidprentice | 0:5952bbaff1c6 | 163 | #endif /* 0 */ |
| davidprentice | 0:5952bbaff1c6 | 164 | |
| davidprentice | 0:5952bbaff1c6 | 165 | #ifdef __cplusplus |
| davidprentice | 0:5952bbaff1c6 | 166 | } // extern "C" |
| davidprentice | 0:5952bbaff1c6 | 167 | #endif // __cplusplus |
| davidprentice | 0:5952bbaff1c6 | 168 |