unsigned long long to string convert

时间:2010-10-18 10:59:10

标签: c

我尝试将unsigned long long转换为像这样的字符串

unsigned long long Data = 12;
char Str[20];

sprintf(Str, "%lld",Data);

当我想看的时候 但我总是看到00

Str[0],Str[1]....;

什么是错的!!!

3 个答案:

答案 0 :(得分:4)

在大多数情况下,%llu应该可以解决问题。但您可能必须在某些Windows平台上使用%I64u

答案 1 :(得分:3)

%lld用于签名long long,请改为使用%llu

答案 2 :(得分:1)

%llu应该在添加到标准时起作用。但是你可以使用安全版snprintf或者考虑比snprintf更好地编写自己的函数。这是你可能感兴趣的一个。

char *ulltostr(uint64 value, char *ptr, int base)
{
  uint64 t = 0, res = 0;
  uint64 tmp = value;
  int count = 0;

  if (NULL == ptr)
  {
    return NULL;
  }

  if (tmp == 0)
  {
    count++;
  }

  while(tmp > 0)
  {
    tmp = tmp/base;
    count++;
  }

  ptr += count;

  *ptr = '\0';

  do
  {
    res = value - base * (t = value / base);
    if (res < 10)
    {
      * --ptr = '0' + res;
    }
    else if ((res >= 10) && (res < 16))
    {
        * -- ptr = 'A' - 10 + res;
    }
  } while ((value = t) != 0);

  return(ptr);
}