C/C++中使用
itoa( i, buffer, 10 );
printf( "String of integer %d (radix 10): %s\n", i, buffer );
itoa( i, buffer, 16 );
printf( "String of integer %d (radix 16): 0x%s\n", i, buffer );
itoa( i, buffer, 2 );
printf( "String of integer %d (radix 2): %s\n", i, buffer );
ltoa( l, buffer, 16 );
printf( "String of long int %ld (radix 16): 0x%s\n", l,
buffer );
ultoa( ul, buffer, 16 );
printf( "String of unsigned long %lu (radix 16): 0x%s\n", ul,
buffer );
GCC中使用
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char buffer[20];
int i = 3445;
long l = -344115L;
unsigned long ul = 1234567890UL;
_itoa( i, buffer, 10 );
printf( "String of integer %d (radix 10): %s\n", i, buffer );
_itoa( i, buffer, 16 );
printf( "String of integer %d (radix 16): 0x%s\n", i, buffer );
_itoa( i, buffer, 2 );
printf( "String of integer %d (radix 2): %s\n", i, buffer );
_ltoa( l, buffer, 16 );
printf( "String of long int %ld (radix 16): 0x%s\n", l,
buffer );
_ultoa( ul, buffer, 16 );
printf( "String of unsigned long %lu (radix 16): 0x%s\n", ul,
buffer );
}
自己写库函数
EXTERN_C char* ultoa(unsigned long n, char* buffer, int radix)
{
static const char digital_alphabet[] = "0123456789ABCDEF";
const int MAX_WIDTH = sizeof(long)*CHAR_BIT;
char temp_buffer[MAX_WIDTH+1]={0};
char* p = temp_buffer+MAX_WIDTH;
do
{
*(p--) = digital_alphabet[n%radix];
n /= radix;
}while(n);
p++;
memcpy(buffer, p, strlen(p)+1);
return buffer;
}
EXTERN_C char* ltoa(long n, char* buffer, int radix)
{
unsigned long d = n>0 ? n : -n;
char * p = buffer;
if(n<0)
*(p++) = '-';
ultoa(d, p, radix);
return buffer;
}
__inline char* utoa(unsigned n, char* buffer, int radix)
{
return ultoa(n, buffer, radix);
}
__inline char* itoa(int n, char* buffer, int radix)
{
return ltoa(n, buffer, radix);
}