将Unsigned Long转换为ascii中的字符串

时间:2012-02-29 00:16:28

标签: c# c++ c

我需要将 unsigned long 转换为 ascii 中基础“b”中的字符串

我收到 long base (0< b< 16),我需要在缓冲区中设置它。 知道如何做到这一点,没有itoa()??

Cumps

2 个答案:

答案 0 :(得分:5)

当然 - 这很简单(遗憾的是,我目前无法编译代码,所以可能有一些拼写错误):

std::string convert(unsigned long value, unsigned long base) {
    std::string rc;
    do {
        rc.push_back("0123456789abcde"[value % base]);
    } while (base - 1? value /= base: value--);
    std::reverse(rc.begin(), rc.end());
    return rc;
}

答案 1 :(得分:2)

这是伪代码,请原谅我任何语法错误:

char  rem  = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}
int   base = 6;
int   len  = 6;
int   rm   = 0;
int   cur  = 0;
char *res  = (char *)malloc(sizeof(char) * len + 1);

unsigned long num  = 123456;

while(num != 0) {
    rm         = num % base;
    res[cur++] = rem[rm]
    num        = num / base;
}

res[cur] = '\0';

这样的事情应该可以解决问题。