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

[复制链接]
1065|12
 楼主| houcs 发表于 2019-5-17 19:58 | 显示全部楼层 |阅读模式
怎样用C语言实现整型向字符型的转换
liuzaiy 发表于 2019-5-17 20:02 | 显示全部楼层

试一下 #include "stdlib.h"  中的 itoa 函数。
yinxiangh 发表于 2019-5-17 20:08 | 显示全部楼层
但是加载 stdlib 库会占用一定的 Flash 空间。
 楼主| houcs 发表于 2019-5-17 20:11 | 显示全部楼层
可以找一下 itoa 的源码,然后自己声明一个函数,这样不用加载整个 stdlib 库。
pangb 发表于 2019-5-17 20:14 | 显示全部楼层
可以找一下 itoa 的源码,然后自己声明一个函数,这样不用加载整个 stdlib 库。
 楼主| houcs 发表于 2019-5-17 20:16 | 显示全部楼层


有代码参考下吗?
chenjunt 发表于 2019-5-17 20:19 | 显示全部楼层

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

/*******************************************************************************
ousj 发表于 2019-5-17 20:23 | 显示全部楼层

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

}
morrisk 发表于 2019-5-17 20:26 | 显示全部楼层
函数原形
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;);
}
zyf部长 发表于 2019-5-17 20:29 | 显示全部楼层

注意这里
void int_str(int i,char * str)
{
int len =0;
 楼主| houcs 发表于 2019-5-17 20:31 | 显示全部楼层
嗯,好,我再看看
sailing1949 发表于 2019-5-31 08:44 | 显示全部楼层
非常好,学习一下
运气一定好 发表于 2019-6-8 21:22 | 显示全部楼层
不是直接加个字符0吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

743

主题

8382

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部