unsigned long long для преобразования строки - PullRequest
3 голосов
/ 18 октября 2010

Я пытаюсь преобразовать unsigned long long в строку, как это

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

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

когда я хочу увидеть но я всегда вижу 00

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

что не так !!!

Ответы [ 3 ]

4 голосов
/ 18 октября 2010

В большинстве случаев, %llu должно сработать.Но вам, возможно, придется использовать %I64u на некоторых платформах Windows.

3 голосов
/ 18 октября 2010

%lld для подписи long long, используйте %llu вместо.

1 голос
/ 03 марта 2013

% 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...