posts - 71,  comments - 41,  trackbacks - 0
又是一道MS的题,把7进制数转换成3进制数。
#include <climits>
bool ConvertBase723(const char *src, char *dst, int len)
{
    
int digit;
    
int value = 0;
    
int start = 0, end = 0;

    
for (int i = 0; src[i] >= '0' && src[i] <= '6'; i++)
    
{
        
if (value <= (INT_MAX - (digit = src[i] - '0')) / 7)
        
{
            value 
= 7 * value + digit;    
        }
 
        
else
        
{
            
return false;
        }

    }
//for
    
    
do 
    
{
        dst[end
++= value % 3 + '0';
        value 
/= 3;
        len
--;

    }
 while(value && (len > 0));
    
    
if (len <= 0)
    
{
        
return false;
    }


    dst[end
--= '\0';

    
while (start < end)
    
{
        dst[start] 
^= dst[end];
        dst[end] 
^= dst[start];
        dst[start] 
^= dst[end];

        start
++;
        end
--;
    }


    
return true;
}
posted on 2006-11-21 11:08 Charles 阅读(660) 评论(0)  编辑 收藏 引用 所属分类: 面试小算法

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2007年7月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

决定开始写工作日记,记录一下自己的轨迹...

常用链接

留言簿(4)

随笔分类(70)

随笔档案(71)

charles推荐访问

搜索

  •  

积分与排名

  • 积分 - 49500
  • 排名 - 452

最新评论

阅读排行榜

评论排行榜