打印
[嵌入式linux]

itoa() 函数的转换原理是什么啊

[复制链接]
1285|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
山狼啸月|  楼主 | 2013-10-22 22:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
static char *itoa(int value, char *string, int radix)
{   
    int     i, d;   
    int     flag = 0;   
    char    *ptr = string;   
     /* This implementation only works for decimal numbers. */   
          if (radix != 10)   
          {   
      *ptr = 0;   
      return string;   
          }   

          if (!value)   
          {   
      *ptr++ = 0x30;   
      *ptr = 0;   
      return string;   
          }   

          /* if this is a negative value insert the minus sign. */   
          if (value < 0)   
          {   
      *ptr++ = '-';   
      /* Make the value positive. */   
      value *= -1;   
          }   
          for (i = 10000; i > 0; i /= 10)   
          {   
      d = value / i;   
      if (d || flag)   
      {   
          *ptr++ = (char)(d + 0x30);   
          value -= (d * i);   
          flag = 1;   
      }   
          }   

  /* Null terminate the string. */   
  *ptr = 0;   
  return string;   
}/* NCL_Itoa */
求换算原理

相关帖子

沙发
li880wert| | 2013-10-25 10:43 | 只看该作者
不就是 字符'2'=0x32  数字 2 =0x2;

如 value = 222   ==>"222";

其他代码 自己看看就明白了
for (i = 10000; i > 0; i /= 10)  ==> int 表示的最大位数 9


/* if this is a negative value insert the minus sign. */   
          if (value < 0)   ==> 负数 -

使用特权

评论回复
板凳
山狼啸月|  楼主 | 2013-10-29 20:36 | 只看该作者
li880wert 发表于 2013-10-25 10:43
不就是 字符'2'=0x32  数字 2 =0x2;

如 value = 222   ==>"222";

看明白了!

使用特权

评论回复
地板
山狼啸月|  楼主 | 2013-10-29 20:36 | 只看该作者
li880wert 发表于 2013-10-25 10:43
不就是 字符'2'=0x32  数字 2 =0x2;

如 value = 222   ==>"222";

看明白了!

使用特权

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

本版积分规则

15

主题

217

帖子

1

粉丝