gpt4 book ai didi

c - 如何将 16 位值返回为 64 位值?

转载 作者:行者123 更新时间:2023-11-30 17:13:35 26 4
gpt4 key购买 nike

// Returns 64 bit mac timer count value
uint64_t get_timestamp()
{
uint16_t cnt;
cnt = read_counter();
printk ("counter value is 0x%x\n", cnt);
return cnt;
}

在调用者内部:

uint64_t ts;        
ts = get_timestamp();
printk ( "returned timestamp is 0x%x \n", ts );

我在屏幕上看到以下内容,上面有什么问题吗?

计数器值为0x000045a5返回的时间戳为0x00000000

计数器值为0x0000698f返回的时间戳为0x00000000

最佳答案

您遇到此问题是因为您错误地打印了值。有专用printf uint*_t 的格式宏类型。

来自 <inttypes.h> 的联机帮助页:

   The fprintf() macros for signed integers are:


PRIdN PRIdLEASTN PRIdFASTN PRIdMAX PRIdPTR
PRIiN PRIiLEASTN PRIiFASTN PRIiMAX PRIiPTR

The fprintf() macros for unsigned integers are:


PRIoN PRIoLEASTN PRIoFASTN PRIoMAX PRIoPTR
PRIuN PRIuLEASTN PRIuFASTN PRIuMAX PRIuPTR
PRIxN PRIxLEASTN PRIxFASTN PRIxMAX PRIxPTR
PRIXN PRIXLEASTN PRIXFASTN PRIXMAX PRIXPTR

例如,打印 uint16_t和一个 uint64_t你可以写(未经测试):

int main (void)
{
uint16_t a = 13;
uint64_t b = 37;

printf("uint16_t: %" PRIx16 ", uint64_t: %" PRIx64 "\n", a, b);

return 0;
}

你应该阅读man stdint.hman inttypes.h如果您对详细信息感兴趣,以及 LEAST 的语义是什么和FAST类型是。非常酷的东西。

关于c - 如何将 16 位值返回为 64 位值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30725918/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com