700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > muduo:高效整型转换为字符串

muduo:高效整型转换为字符串

时间:2023-03-01 13:42:31

相关推荐

muduo:高效整型转换为字符串

muduo中有一段高效的整形转换为字符串的算法,这里记录一下(Efficient Integer to String Conversions, by Matthew Wilson)

#include <stdio.h>#include <iostream>#include<algorithm>const char digits[] = "9876543210123456789";const char* zero = digits + 9;//zero两边对称,因为余数可能为负数const char digitsHex[] = "0123456789ABCDEF";//十六进制时使用// Efficient Integer to String Conversions, by Matthew Wilson.void convert(char buf[], int value)//把int转为字符串,{int i = value;char* p = buf;do{int lsd = static_cast<int>(i % 10);i /= 10;*p++ = zero[lsd];} while (i != 0);if (value < 0){*p++ = '-';}*p = '\0';std::reverse(buf, p);//逆转[buf p)}void convertHex(char buf[], uintptr_t value)//转为十六进制字符串{uintptr_t i = value;char* p = buf;do{int lsd = static_cast<int>(i % 16);i /= 16;*p++ = digitsHex[lsd];} while (i != 0);*p = '\0';std::reverse(buf, p);}int main(){printf("zero =%c\n",zero[-3]);int a = -123;char str1[10] = {0};convert(str1,a);printf("str1 =%s\n",str1);int b = 0x111;char str2[10] = {0};convertHex(str2,b);printf("str2 =%s\n",str2);return 0;}

运行:zero =3

str1 =-123

str2 =111

注意zero的用法,这里的整形可能为负数

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。