函数
<stdlib.h>

itoa

char *  itoa ( int value, char * str, int base );
将整数转换为字符串(非标准函数)
使用指定的 base(基数)将一个整数 value 转换为以空字符结尾的字符串,并将结果存储在由 str 参数指定的数组中。

如果 base 是 10 且 value 是负数,则结果字符串会以一个减号(-)开头。对于任何其他 basevalue 总是被视为无符号数。

str 应该是一个足够长的数组,以容纳任何可能的值(sizeof(int)*8+1),对于radix=2,即在 16 位平台上需要 17 字节,在 32 位平台上需要 33 字节。

参数

要转换为字符串的值。
str
内存中的数组,用于存储结果,即以空字符结尾的字符串。
base
用于将 value 表示为字符串的数字基数,介于236,其中10代表十进制,16十六进制,8八进制,以及2二进制之间。

返回值

一个指向结果字符串(以空字符结尾)的指针,与参数str.

可移植性

此函数未在 ANSI-C 中定义,也不是 C++ 的一部分,但某些编译器支持它。

在某些情况下,一个符合标准的替代方案可能是 sprintf
  • sprintf(str,"%d",value) 转换为十进制。
  • sprintf(str,"%x",value) 转换为十六进制。
  • sprintf(str,"%o",value) 转换为八进制。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* itoa example */
#include <stdio.h>
#include <stdlib.h>

int main ()
{
  int i;
  char buffer [33];
  printf ("Enter a number: ");
  scanf ("%d",&i);
  itoa (i,buffer,10);
  printf ("decimal: %s\n",buffer);
  itoa (i,buffer,16);
  printf ("hexadecimal: %s\n",buffer);
  itoa (i,buffer,2);
  printf ("binary: %s\n",buffer);
  return 0;
}

输出
Enter a number: 1750
decimal: 1750
hexadecimal: 6d6
binary: 11011010110


另见