我尝试将unsigned long long转换为像这样的字符串
unsigned long long Data = 12;
char Str[20];
sprintf(Str, "%lld",Data);
当我想看的时候 但我总是看到00
Str[0],Str[1]....;
什么是错的!!!
答案 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);
}