簡體   English   中英

如何在const char字符串中轉換uint64_t值?

[英]how to convert uint64_t value in const char string?

在一種情況下查看

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 PRIu64inttypes.h 。) YMMV。

使用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;
}
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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM