打印

怎样用C语言实现整型向字符型的转换

[复制链接]
1508|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhuww|  楼主 | 2014-3-25 20:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
怎样用C语言实现整型向字符型的转换
沙发
zhanglli| | 2014-3-25 21:01 | 只看该作者
试一下 #include "stdlib.h"  中的 itoa 函数。

使用特权

评论回复
板凳
lium| | 2014-3-25 21:02 | 只看该作者
但是加载 stdlib 库会占用一定的 Flash 空间。

使用特权

评论回复
地板
zhuww|  楼主 | 2014-3-25 21:03 | 只看该作者
可以找一下 itoa 的源码,然后自己声明一个函数,这样不用加载整个 stdlib 库。

使用特权

评论回复
5
lium| | 2014-3-25 21:05 | 只看该作者
可以找一下 itoa 的源码,然后自己声明一个函数,这样不用加载整个 stdlib 库。

使用特权

评论回复
6
zhuww|  楼主 | 2014-3-25 21:08 | 只看该作者
有代码参考下吗?

使用特权

评论回复
7
lium| | 2014-3-25 21:10 | 只看该作者
在 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
guoyt| | 2014-3-25 21:12 | 只看该作者
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
soso| | 2014-3-25 21:13 | 只看该作者
函数原形
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
hanwe| | 2014-3-25 21:14 | 只看该作者
注意这里
void int_str(int i,char * str)
{
int len =0;

使用特权

评论回复
11
zhuww|  楼主 | 2014-3-25 21:17 | 只看该作者
嗯,好,我再看看

使用特权

评论回复
12
zhuww|  楼主 | 2014-3-25 22:37 | 只看该作者
先结贴了啊~

使用特权

评论回复
13
lussby| | 2014-3-26 15:11 | 只看该作者

使用特权

评论回复
14
kk5290122| | 2014-3-26 22:12 | 只看该作者
lz结贴就赶紧给大家散分了 。

使用特权

评论回复
15
xuesong@-@| | 2014-5-28 09:33 | 只看该作者
新手参阅

使用特权

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

本版积分规则

893

主题

8252

帖子

1

粉丝