[嵌入式linux] itoa() 函数的转换原理是什么啊

[复制链接]
1588|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

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