如何更高效的将int转为string

在不考虑可读性的情况下, 将数值转为16进制字符串会更高效

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const char hex_digits[] = "0123456789ABCDEF";
char * llong2str(long long n, char *& result) {
unsigned long long abs_n = n;
if (n < 0)
abs_n = -n;
do {
char c = hex_digits[abs_n & 0xF];
*(--result) = c;
abs_n >>= 4;
} while (abs_n != 0);
*(--result) = 'X';
*(--result) = '0';
if (n < 0)
*(--result) = '-';
return result;
}
1
2
3
4
// 使用静态数组或栈上的数组代替动态分配的缓冲区,因为动态分配的缓冲区需要调用malloc和free函数,这些函数可能比较耗时
char tmp[24] = {0};
char* result = tmp + 23;
llong2str(long value, result);