博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个我写的通用的很慢的整数转换为字符串的算法,哈哈
阅读量:6820 次
发布时间:2019-06-26

本文共 1745 字,大约阅读时间需要 5 分钟。

一个我写的通用的很慢的整数转换为字符串的算法,哈哈

受一个网友提示,不过他的我看不懂,根据他神侃般的解释用模和除算法实现的.其实很通用,还可以再扩展,不过速度一定没法和大师们写的库函数相比 :) 别用在效率要求高的地方啊.

//最大兼容的整数转换//效率不高//2进制
std::string uitoa_2(unsigned __int64 v)
{
    std::string r = "";
    std::string z = "";
    //unsigned 不会有负数的
    //if (v<0)
    //{
    //    v = 0-v;
    //    z = '-';
    //}
    char c;
    byte b;
    unsigned __int64 d = 1;//分母
    unsigned __int64 i = 0;//当前数值
    while(1)
    {
        b = (v % (d*2))/d;
        c = b + '0';
        //if(b>9) c = b + 'A'-10;
        if (v/d == 0)break;
        r = c + r;
        d = d * 2;
    }
    return z + r;
}//
//最大兼容的整数转换//效率不高//16进制
std::string uitoa_hex(unsigned __int64 v)
{
    std::string r = "";
    std::string z = "";
    //unsigned 不会有负数的
    //if (v<0)
    //{
    //    v = 0-v;
    //    z = '-';
    //}
    char c;
    byte b;
    unsigned __int64 d = 1;//分母
    unsigned __int64 i = 0;//当前数值
    while(1)
    {
        b = (v % (d*16))/d;
        c = b + '0';
        if(b>9) c = b + 'A'-10;
        if (v/d == 0)break;
        r = c + r;
        d = d * 16;
    }
    return z + r;
}//
//最大兼容的整数转换//效率不高
std::string uitoa(unsigned __int64 v)
{
    std::string r = "";
    std::string z = "";
    //unsigned 不会有负数的
    //if (v<0)
    //{
    //    v = 0-v;
    //    z = '-';
    //}
    char c;
    byte b;
    unsigned __int64 d = 1;//分母
    unsigned __int64 i = 0;//当前数值
    while(1)
    {
        b = (v % (d*10))/d;
        c = b + '0';
        if (v/d == 0)break;
        r = c + r;
        d = d * 10;
    }
    return z + r;
}//
//最大兼容的整数转换//效率不高
std::string itoa(signed __int64 v)
{
    std::string r = "";
    std::string z = "";
    //unsigned 不会有负数的
    if (v<0)
    {
        v = 0-v;
        z = '-';
    }
    char c;
    byte b;
    unsigned __int64 d = 1;//分母
    unsigned __int64 i = 0;//当前数值
    while(1)
    {
        b = (v % (d*10))/d;
        c = b + '0';
        if (v/d == 0)break;
        r = c + r;
        d = d * 10;
    }
    return z + r;
}//
std::string string2hex(std::string v)
{
    std::string r = "";
    std::string one = "";
    
    for (size_t i=0;i<v.size();i++)
    {
        char c = v[i];
        one = uitoa_hex(c);
        if(one.size()==2)
        {
            r += one;
        }
        else
        {
            r += '0' + one;
        }
    }
    return r;
}//

转载地址:http://ceozl.baihongyu.com/

你可能感兴趣的文章