itoa

#include <stdlib.h> 
#include <stdio.h> 
#include <algorithm>
#include <iostream>
#include <string>

using namespace std;

/* 实现itoa函数 int to array */ 

char* _itoa(int value, char* string, int radix)
{
    if(radix < 0 or radix >36)
    {
        cout <<"radix is invaild,return "<<endl;
        return 0;
    }

    int sign = (radix == 10 and value < 0);

    int tmpValue;
    if(sign)
    {
        tmpValue = - value;
    }
    else
    {
        tmpValue = (unsigned)value;
    }

    char tmpChar[33];
    char* tmpResult = tmpChar;
    int tmp;

    while(tmpValue or tmpResult == tmpChar)
    {
        tmp = tmpValue % radix;
        tmpValue = tmpValue / radix;
        if(tmp < 10)
        {
            *tmpResult++ = tmp + '0';
        }
        else
        {
            *tmpResult++ = tmp + 'a' - 10;
        }
    }

    if(string == 0)
    {
        string = (char*)malloc(tmpResult - tmpChar + sign + 1);    
    }
    char *tmpString = string;
    if(sign)
    {
        *tmpString++ = '-';
    }

    while(tmpResult > tmpChar)
    {
        *tmpString++ = *--tmpResult;
    }

    tmpString = 0;
    return string;
}

int main() 
{ 
    int number = 0xabcd; 
    char string[25]; 
    _itoa(number, string, 54);

    printf("integer = %x string = %s\n", number, string);
    cout <<std::to_string(number) <<endl;
    std::
    getchar();
    return 0; 
} 

 

posted @ 2021-10-25 21:38  Kiris  阅读(243)  评论(0编辑  收藏  举报