作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
// 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.h
和man inttypes.h
如果您对详细信息感兴趣,以及 LEAST
的语义是什么和FAST
类型是。非常酷的东西。
关于c - 如何将 16 位值返回为 64 位值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30725918/
我是一名优秀的程序员,十分优秀!