added functions _ltoa _uitoa
authorbela <bela@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Mon, 12 Aug 2002 14:09:57 +0000 (14:09 +0000)
committerbela <bela@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Mon, 12 Aug 2002 14:09:57 +0000 (14:09 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2074 4a8a32a2-be11-0410-ad9d-d568d2c75423

device/lib/_ltoa.c [new file with mode: 0755]
device/lib/libsdcc.lib

diff --git a/device/lib/_ltoa.c b/device/lib/_ltoa.c
new file mode 100755 (executable)
index 0000000..0ba0c3d
--- /dev/null
@@ -0,0 +1,48 @@
+/*-------------------------------------------------------------------------
+ integer to string conversion
+
+ Written by:   Bela Torok, 1999
+               bela.torok@kssg.ch
+ usage:
+
+ _ultoa(unsigned long value, char* string, int radix)
+ _ltoa(long value, char* string, int radix)
+
+ value  ->  Number to be converted
+ string ->  Result
+ radix  ->  Base of value (e.g.: 2 for binary, 10 for decimal, 16 for hex)
+---------------------------------------------------------------------------*/
+
+#define NUMBER_OF_DIGITS 32
+
+void _ultoa(unsigned long value, char* string, unsigned char radix)
+{
+unsigned char index;
+char buffer[NUMBER_OF_DIGITS];  /* space for NUMBER_OF_DIGITS + '\0' */
+
+  index = NUMBER_OF_DIGITS;
+
+  do {
+    buffer[--index] = '0' + (value % radix);
+    if ( buffer[index] > '9') buffer[index] += 'A' - '9' - 1;
+    value /= radix;
+  } while (value != 0);
+
+  do {
+    *string++ = buffer[index++];
+  } while ( index < NUMBER_OF_DIGITS );
+
+  *string = 0;  /* string terminator */
+}
+
+void _ltoa(long value, char* string, unsigned char radix)
+{
+  if (value < 0 && radix == 10) {
+    *string++ = '-';
+    _ultoa(-value, string, radix);
+  }
+  else {
+    _ultoa(value, string, radix);
+  }
+}
+
index 25246d103babcb57f07d9a92cfe858dd74e2dc11..7f3978c101d09b64a32e6800ff069e35afb5c4c1 100644 (file)
@@ -7,6 +7,8 @@ _ispunct
 _isspace
 _isupper
 _isxdigit
+_itoa
+_ltoa
 _strchr
 _strcmp
 _strcpy