UIPEthernet library for Arduino IDE, Eclipse with arduino plugin and MBED/SMeshStudio (AVR,STM32F,ESP8266,Intel ARC32,Nordic nRF51,Teensy boards,Realtek Ameba(RTL8195A,RTL8710)), ENC28j60 network chip. Compatible with Wiznet W5100 Ethernet library API. Compiled and tested on Nucleo-F302R8. Master repository is: https://github.com/UIPEthernet/UIPEthernet/
mbed/itoa.c@39:deeb00b81cc9, 2018-01-23 (annotated)
- Committer:
- cassyarduino
- Date:
- Tue Jan 23 15:08:43 2018 +0100
- Revision:
- 39:deeb00b81cc9
- Parent:
- 35:f9f3a91fe4d4
Release: 2.0.4
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
cassyarduino | 7:ef1f092165eb | 1 | /* |
cassyarduino | 7:ef1f092165eb | 2 | Copyright (c) 2011 Arduino. All right reserved. |
cassyarduino | 7:ef1f092165eb | 3 | |
cassyarduino | 7:ef1f092165eb | 4 | This library is free software; you can redistribute it and/or |
cassyarduino | 7:ef1f092165eb | 5 | modify it under the terms of the GNU Lesser General Public |
cassyarduino | 7:ef1f092165eb | 6 | License as published by the Free Software Foundation; either |
cassyarduino | 7:ef1f092165eb | 7 | version 2.1 of the License, or (at your option) any later version. |
cassyarduino | 7:ef1f092165eb | 8 | |
cassyarduino | 7:ef1f092165eb | 9 | This library is distributed in the hope that it will be useful, |
cassyarduino | 7:ef1f092165eb | 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
cassyarduino | 7:ef1f092165eb | 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
cassyarduino | 7:ef1f092165eb | 12 | See the GNU Lesser General Public License for more details. |
cassyarduino | 7:ef1f092165eb | 13 | |
cassyarduino | 7:ef1f092165eb | 14 | You should have received a copy of the GNU Lesser General Public |
cassyarduino | 7:ef1f092165eb | 15 | License along with this library; if not, write to the Free Software |
cassyarduino | 7:ef1f092165eb | 16 | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
cassyarduino | 7:ef1f092165eb | 17 | */ |
cassyarduino | 35:f9f3a91fe4d4 | 18 | #if !defined(ARDUINO_ARCH_AVR) && !defined(ARDUINO_ARCH_SAM) |
cassyarduino | 7:ef1f092165eb | 19 | |
cassyarduino | 7:ef1f092165eb | 20 | #include "itoa.h" |
cassyarduino | 7:ef1f092165eb | 21 | #include <string.h> |
cassyarduino | 7:ef1f092165eb | 22 | |
cassyarduino | 7:ef1f092165eb | 23 | #ifdef __cplusplus |
cassyarduino | 7:ef1f092165eb | 24 | extern "C"{ |
cassyarduino | 7:ef1f092165eb | 25 | #endif // __cplusplus |
cassyarduino | 7:ef1f092165eb | 26 | |
cassyarduino | 7:ef1f092165eb | 27 | #if 0 |
cassyarduino | 7:ef1f092165eb | 28 | /* reverse: reverse string s in place */ |
cassyarduino | 7:ef1f092165eb | 29 | static void reverse( char s[] ) |
cassyarduino | 7:ef1f092165eb | 30 | { |
cassyarduino | 7:ef1f092165eb | 31 | int i, j ; |
cassyarduino | 7:ef1f092165eb | 32 | char c ; |
cassyarduino | 7:ef1f092165eb | 33 | |
cassyarduino | 7:ef1f092165eb | 34 | for ( i = 0, j = strlen(s)-1 ; i < j ; i++, j-- ) |
cassyarduino | 7:ef1f092165eb | 35 | { |
cassyarduino | 7:ef1f092165eb | 36 | c = s[i] ; |
cassyarduino | 7:ef1f092165eb | 37 | s[i] = s[j] ; |
cassyarduino | 7:ef1f092165eb | 38 | s[j] = c ; |
cassyarduino | 7:ef1f092165eb | 39 | } |
cassyarduino | 7:ef1f092165eb | 40 | } |
cassyarduino | 7:ef1f092165eb | 41 | |
cassyarduino | 7:ef1f092165eb | 42 | /* itoa: convert n to characters in s */ |
cassyarduino | 7:ef1f092165eb | 43 | extern void itoa( int n, char s[] ) |
cassyarduino | 7:ef1f092165eb | 44 | { |
cassyarduino | 7:ef1f092165eb | 45 | int i, sign ; |
cassyarduino | 7:ef1f092165eb | 46 | |
cassyarduino | 7:ef1f092165eb | 47 | if ( (sign = n) < 0 ) /* record sign */ |
cassyarduino | 7:ef1f092165eb | 48 | { |
cassyarduino | 7:ef1f092165eb | 49 | n = -n; /* make n positive */ |
cassyarduino | 7:ef1f092165eb | 50 | } |
cassyarduino | 7:ef1f092165eb | 51 | |
cassyarduino | 7:ef1f092165eb | 52 | i = 0; |
cassyarduino | 7:ef1f092165eb | 53 | do |
cassyarduino | 7:ef1f092165eb | 54 | { /* generate digits in reverse order */ |
cassyarduino | 7:ef1f092165eb | 55 | s[i++] = n % 10 + '0'; /* get next digit */ |
cassyarduino | 7:ef1f092165eb | 56 | } while ((n /= 10) > 0) ; /* delete it */ |
cassyarduino | 7:ef1f092165eb | 57 | |
cassyarduino | 7:ef1f092165eb | 58 | if (sign < 0 ) |
cassyarduino | 7:ef1f092165eb | 59 | { |
cassyarduino | 7:ef1f092165eb | 60 | s[i++] = '-'; |
cassyarduino | 7:ef1f092165eb | 61 | } |
cassyarduino | 7:ef1f092165eb | 62 | |
cassyarduino | 7:ef1f092165eb | 63 | s[i] = '\0'; |
cassyarduino | 7:ef1f092165eb | 64 | |
cassyarduino | 7:ef1f092165eb | 65 | reverse( s ) ; |
cassyarduino | 7:ef1f092165eb | 66 | } |
cassyarduino | 7:ef1f092165eb | 67 | |
cassyarduino | 7:ef1f092165eb | 68 | #else |
cassyarduino | 7:ef1f092165eb | 69 | |
cassyarduino | 7:ef1f092165eb | 70 | extern char* itoa( int value, char *string, int radix ) |
cassyarduino | 7:ef1f092165eb | 71 | { |
cassyarduino | 7:ef1f092165eb | 72 | return ltoa( value, string, radix ) ; |
cassyarduino | 7:ef1f092165eb | 73 | } |
cassyarduino | 7:ef1f092165eb | 74 | |
cassyarduino | 7:ef1f092165eb | 75 | extern char* ltoa( long value, char *string, int radix ) |
cassyarduino | 7:ef1f092165eb | 76 | { |
cassyarduino | 7:ef1f092165eb | 77 | char tmp[33]; |
cassyarduino | 7:ef1f092165eb | 78 | char *tp = tmp; |
cassyarduino | 7:ef1f092165eb | 79 | long i; |
cassyarduino | 7:ef1f092165eb | 80 | unsigned long v; |
cassyarduino | 7:ef1f092165eb | 81 | int sign; |
cassyarduino | 7:ef1f092165eb | 82 | char *sp; |
cassyarduino | 7:ef1f092165eb | 83 | |
cassyarduino | 7:ef1f092165eb | 84 | if ( string == NULL ) |
cassyarduino | 7:ef1f092165eb | 85 | { |
cassyarduino | 7:ef1f092165eb | 86 | return 0 ; |
cassyarduino | 7:ef1f092165eb | 87 | } |
cassyarduino | 7:ef1f092165eb | 88 | |
cassyarduino | 7:ef1f092165eb | 89 | if (radix > 36 || radix <= 1) |
cassyarduino | 7:ef1f092165eb | 90 | { |
cassyarduino | 7:ef1f092165eb | 91 | return 0 ; |
cassyarduino | 7:ef1f092165eb | 92 | } |
cassyarduino | 7:ef1f092165eb | 93 | |
cassyarduino | 7:ef1f092165eb | 94 | sign = (radix == 10 && value < 0); |
cassyarduino | 7:ef1f092165eb | 95 | if (sign) |
cassyarduino | 7:ef1f092165eb | 96 | { |
cassyarduino | 7:ef1f092165eb | 97 | v = -value; |
cassyarduino | 7:ef1f092165eb | 98 | } |
cassyarduino | 7:ef1f092165eb | 99 | else |
cassyarduino | 7:ef1f092165eb | 100 | { |
cassyarduino | 7:ef1f092165eb | 101 | v = (unsigned long)value; |
cassyarduino | 7:ef1f092165eb | 102 | } |
cassyarduino | 7:ef1f092165eb | 103 | |
cassyarduino | 7:ef1f092165eb | 104 | while (v || tp == tmp) |
cassyarduino | 7:ef1f092165eb | 105 | { |
cassyarduino | 7:ef1f092165eb | 106 | i = v % radix; |
cassyarduino | 7:ef1f092165eb | 107 | v = v / radix; |
cassyarduino | 7:ef1f092165eb | 108 | if (i < 10) |
cassyarduino | 7:ef1f092165eb | 109 | *tp++ = i+'0'; |
cassyarduino | 7:ef1f092165eb | 110 | else |
cassyarduino | 7:ef1f092165eb | 111 | *tp++ = i + 'a' - 10; |
cassyarduino | 7:ef1f092165eb | 112 | } |
cassyarduino | 7:ef1f092165eb | 113 | |
cassyarduino | 7:ef1f092165eb | 114 | sp = string; |
cassyarduino | 7:ef1f092165eb | 115 | |
cassyarduino | 7:ef1f092165eb | 116 | if (sign) |
cassyarduino | 7:ef1f092165eb | 117 | *sp++ = '-'; |
cassyarduino | 7:ef1f092165eb | 118 | while (tp > tmp) |
cassyarduino | 7:ef1f092165eb | 119 | *sp++ = *--tp; |
cassyarduino | 7:ef1f092165eb | 120 | *sp = 0; |
cassyarduino | 7:ef1f092165eb | 121 | |
cassyarduino | 7:ef1f092165eb | 122 | return string; |
cassyarduino | 7:ef1f092165eb | 123 | } |
cassyarduino | 7:ef1f092165eb | 124 | |
cassyarduino | 7:ef1f092165eb | 125 | extern char* utoa( unsigned long value, char *string, int radix ) |
cassyarduino | 7:ef1f092165eb | 126 | { |
cassyarduino | 7:ef1f092165eb | 127 | return ultoa( value, string, radix ) ; |
cassyarduino | 7:ef1f092165eb | 128 | } |
cassyarduino | 7:ef1f092165eb | 129 | |
cassyarduino | 7:ef1f092165eb | 130 | extern char* ultoa( unsigned long value, char *string, int radix ) |
cassyarduino | 7:ef1f092165eb | 131 | { |
cassyarduino | 7:ef1f092165eb | 132 | char tmp[33]; |
cassyarduino | 7:ef1f092165eb | 133 | char *tp = tmp; |
cassyarduino | 7:ef1f092165eb | 134 | long i; |
cassyarduino | 7:ef1f092165eb | 135 | unsigned long v = value; |
cassyarduino | 7:ef1f092165eb | 136 | char *sp; |
cassyarduino | 7:ef1f092165eb | 137 | |
cassyarduino | 7:ef1f092165eb | 138 | if ( string == NULL ) |
cassyarduino | 7:ef1f092165eb | 139 | { |
cassyarduino | 7:ef1f092165eb | 140 | return 0; |
cassyarduino | 7:ef1f092165eb | 141 | } |
cassyarduino | 7:ef1f092165eb | 142 | |
cassyarduino | 7:ef1f092165eb | 143 | if (radix > 36 || radix <= 1) |
cassyarduino | 7:ef1f092165eb | 144 | { |
cassyarduino | 7:ef1f092165eb | 145 | return 0; |
cassyarduino | 7:ef1f092165eb | 146 | } |
cassyarduino | 7:ef1f092165eb | 147 | |
cassyarduino | 7:ef1f092165eb | 148 | while (v || tp == tmp) |
cassyarduino | 7:ef1f092165eb | 149 | { |
cassyarduino | 7:ef1f092165eb | 150 | i = v % radix; |
cassyarduino | 7:ef1f092165eb | 151 | v = v / radix; |
cassyarduino | 7:ef1f092165eb | 152 | if (i < 10) |
cassyarduino | 7:ef1f092165eb | 153 | *tp++ = i+'0'; |
cassyarduino | 7:ef1f092165eb | 154 | else |
cassyarduino | 7:ef1f092165eb | 155 | *tp++ = i + 'a' - 10; |
cassyarduino | 7:ef1f092165eb | 156 | } |
cassyarduino | 7:ef1f092165eb | 157 | |
cassyarduino | 7:ef1f092165eb | 158 | sp = string; |
cassyarduino | 7:ef1f092165eb | 159 | |
cassyarduino | 7:ef1f092165eb | 160 | |
cassyarduino | 7:ef1f092165eb | 161 | while (tp > tmp) |
cassyarduino | 7:ef1f092165eb | 162 | *sp++ = *--tp; |
cassyarduino | 7:ef1f092165eb | 163 | *sp = 0; |
cassyarduino | 7:ef1f092165eb | 164 | |
cassyarduino | 7:ef1f092165eb | 165 | return string; |
cassyarduino | 7:ef1f092165eb | 166 | } |
cassyarduino | 7:ef1f092165eb | 167 | #endif /* 0 */ |
cassyarduino | 7:ef1f092165eb | 168 | |
cassyarduino | 7:ef1f092165eb | 169 | #ifdef __cplusplus |
cassyarduino | 7:ef1f092165eb | 170 | } // extern "C" |
cassyarduino | 7:ef1f092165eb | 171 | #endif // __cplusplus |
cassyarduino | 35:f9f3a91fe4d4 | 172 | |
cassyarduino | 35:f9f3a91fe4d4 | 173 | #endif |