码迷,mamicode.com
首页 > 其他好文 > 详细

10进制正整数转4位定长的36进制字符串

时间:2015-04-07 19:31:40      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

题目描述:

请设计一个函数可以把10进制的正整数转换为4位定长的36进制字符串。

36进制的规则为:“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ”;

举例说明:
1=“0001”
10=“000A”
20=“000K”
35=“000Z”
36=“0010”
100=“002S”
2000=“01JK”

  这是腾讯2015校园招聘技术类研发笔试题中的一题,给出自己的答案,欢迎拍砖。

solution:

string convert(int x)
{
    string res;
    if(x < 0)
        return res;
    if(x > 1679615)
        return "ZZZZ";
    char map[36] = {0,1,2,3,4,5,6,7,8,9,
        A,B,C,D,E,F,G,
        H,I,J,K,L,M,N,
        O,P,Q,R,S,T,
        U,V,W,X,Y,Z
    };
    int weight = 36*36*36;
    for (int i = 0;i < 4;++i)
    {
        int tmp = x / weight;
        res += map[tmp];
        x -= tmp * weight;
        weight /= 36;
    }
    return res;
}

 

10进制正整数转4位定长的36进制字符串

标签:

原文地址:http://www.cnblogs.com/gattaca/p/4399090.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!