我需要将 unsigned long 转换为 ascii 中基础“b”中的字符串。
我收到 long 和 base (0< b< 16),我需要在缓冲区中设置它。 知道如何做到这一点,没有itoa()??
Cumps
答案 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';
这样的事情应该可以解决问题。