打印

整型向字符型的转换

[复制链接]
357|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
houcs|  楼主 | 2017-12-17 15:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
怎样用C语言实现整型向字符型的转换
沙发
liuzaiy| | 2017-12-17 15:41 | 只看该作者
试一下 #include "stdlib.h"  中的 itoa 函数。

使用特权

评论回复
板凳
yinxiangh| | 2017-12-17 15:43 | 只看该作者
但是加载 stdlib 库会占用一定的 Flash 空间。

使用特权

评论回复
地板
houcs|  楼主 | 2017-12-17 15:45 | 只看该作者

可以找一下 itoa 的源码,然后自己声明一个函数,这样不用加载整个 stdlib 库。

使用特权

评论回复
5
pangb| | 2017-12-17 15:45 | 只看该作者

可以找一下 itoa 的源码,然后自己声明一个函数,这样不用加载整个 stdlib 库。

使用特权

评论回复
6
houcs|  楼主 | 2017-12-17 15:46 | 只看该作者

有代码参考下吗?

使用特权

评论回复
7
chenjunt| | 2017-12-17 15:48 | 只看该作者
在 PSoC5上用过,仅供参考

/*******************************************************************************
* Function Name: customize_itoa
********************************************************************************
* Summary:
*    This is a simple function to convert int to ascii code
*
* Parameters:  
*
* Return:
*
*******************************************************************************/
char *customize_itoa(int num,char *str,int radix)
{
    char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
     unsigned unum;
    int i=0,j,k;
     if(radix==10&&num<0)
    {
         unum=(unsigned)-num;
         str[i++]='-';
     }
     else unum=(unsigned)num;

    do
    {
         str[i++]=index[unum%(unsigned)radix];
         unum/=radix;
     }while(unum);
     str[i]='\0';

    if(str[0]=='-') k=1;
    else k=0;

    char temp;
     for(j=k;j<=(i-k-1)/2.0;j++)
     {
         temp=str[j];
         str[j]=str[i-j-1];
         str[i-j-1]=temp;
     }
     return str;
}

/*******************************************************************************

使用特权

评论回复
8
ousj| | 2017-12-17 15:50 | 只看该作者

void int_str(int i,char * str)
{
int len =0;
int j;
char c;   
   while(i>0)
     {
           str[len++] = i%10 +'0';
           i= i/10;
      }
      str[len] = '\0';

     for(j=0;j<len/2;j++)
    {
       c = str[j];
       str[j] = str[len-j];
       str[len-j] = c;
     }

}

使用特权

评论回复
9
morrisk| | 2017-12-17 15:53 | 只看该作者
函数原形
char *itoa(int value, char *string, int radix)
将整形数value转换为其等价的字符串
头文件stdlib.h

Parameters(参数说明)

value
Number to be converted(将要被转换的值)

string
String result(转换的结果)

radix
Base of value; must be in the range 2 – 36
(转换的基数,取值范围2-36。例如radix=10表示10进制,radix=8表示8进制。)

返回值:与string参数相同,便于函数的嵌套调用

例子:(来自MSDN,有删改)
#i nclude &lt;stdlib.h&gt;
#i nclude &lt;stdio.h&gt;

void main( void )
{
   char buffer[20];
   int  i = 3445;

   itoa( i, buffer, 10 );
   printf( &quot;String of integer %d (radix 10): %s\n&quot;, i, buffer );
   itoa( i, buffer, 16 );
   printf( &quot;String of integer %d (radix 16): 0x%s\n&quot;, i, buffer );
   itoa( i, buffer, 2  );
   printf( &quot;String of integer %d (radix 2): %s\n&quot;, i, buffer );
    system(&quot;pause&quot;);
}

使用特权

评论回复
10
zyf部长| | 2017-12-17 15:55 | 只看该作者

注意这里
void int_str(int i,char * str)
{
int len =0;

使用特权

评论回复
11
houcs|  楼主 | 2017-12-17 15:57 | 只看该作者


嗯,好,我再看看

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

743

主题

8382

帖子

5

粉丝