如何在const char字符串中转换uint64_t值?

时间:2011-11-30 08:44:50

标签: c

见一种情况

uint64_t trackuid = 2906622092;

现在我想在函数参数为const char*

的函数中传递此值
func(const char *uid)
{
   printf("uid is %s",uid);
}

这应该打印

uid is 2906622092 

我该怎么做?

3 个答案:

答案 0 :(得分:9)

// length of 2**64 - 1, +1 for nul.
char buff[21];

// copy to buffer
sprintf(buff, "%" PRIu64, trackuid);

// call function
func(buff);

这需要C99,但是,我的记忆显示MS编译器没有PRIu64。 (PRIu64位于inttypes.h。)YMMV。

答案 1 :(得分:8)

使用snprintf将数字转换为字符串。对于stdint.h标题中的整数类型,请使用inttypes.h中的格式宏。

#define __STDC_FORMAT_MACROS // non needed in C, only in C++
#include <inttypes.h>
#include <stdio.h>

void func(const char *uid)
{
    printf("uid is %s\n",uid);
}

int main()
{
    uint64_t trackuid = 2906622092;

    char buf[256];
    snprintf(buf, sizeof buf, "%"PRIu64, trackuid);

    func(buf);

    return 0;
}

答案 2 :(得分:1)

char buf[40];
memset (buf, 0, sizeof(buf));
snprintf (buf, sizeof(buf)-1, "%llu", (unsigned long long) trackuid);
func(buf);

应该在sizeof(unsigned long long) == sizeof(uint64_t)

时有效

修改

但是,更好的答案是Maxim Yegorushkin使用"%"PRIu64