如何在const char字符串中转换uint64_t值?
在一种情况下看
uint64_t trackuid = 2906622092;
现在我想在一个函数中传递这个值,其中函数参数是const char*
func(const char *uid) { printf("uid is %s",uid); }
这应该打印
uid is 2906622092
我怎样才能做到这一点?
// 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。
使用snprintf
将数字转换为字符串。 对于stdint.h
头文件中的整数类型,请使用inttypes.h
的格式宏。
#define __STDC_FORMAT_MACROS // non needed in C, only in C++ #include #include 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; }
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