muduo:高效整型转换为字符串
生活随笔
收集整理的這篇文章主要介紹了
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的用法,這里的整形可能為負數
總結
以上是生活随笔為你收集整理的muduo:高效整型转换为字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: getrlimit读取进程能打开的最大文
- 下一篇: muduo:获取进程相关信息