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);
}

本文介绍在C/C++中如何将整数转换为不同进制的字符串形式,包括使用标准库函数和自定义实现两种方法。示例代码演示了itoa、ltoa及ultoa函数的应用,并提供了一个自定义的整数转字符串库函数实现。
1326

被折叠的 条评论
为什么被折叠?



