代码来自:陈硕muduo库

#include <stdio.h>
#include <algorithm>
#include <stdint.h>
  const char digits[] = "9876543210123456789";
  const char* zero = digits + 9;

  const char digitsHex[] = "0123456789ABCDEF";

  // Efficient Integer to String Conversions, by Matthew Wilson.
  template<typename T>
  size_t convert(char buf[], T value)
  {
    T 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);

    return p - buf;
  }

  size_t 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);

    return p - buf;
  }

  int main()
  {
    char buf[32];
    convert<int>(buf,32001);
    printf("%s\n",buf);

    int i = 10;
    uintptr_t p = reinterpret_cast<uintptr_t>(&i);
    convertHex(buf,p);
    printf("%p\n",&i);
    printf("%s\n",buf);
  }
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐