繁体   English   中英

如何printf()uint16_t?

[英]How do I printf() a uint16_t?

我需要使用printf()来打印uint16_t。 这个SO答案( 如何打印uint32_t和uint16_t变量值? )说我需要使用inttypes.h。

但是,我正在使用嵌入式系统,并且inttypes.h不可用。 当uint16_t的格式说明符不可用时,如何打印uint16_t?

一个明显的方法是:

printf("%u\n", (unsigned int)x);

unsigned int保证至少为16位,因此这不是有损转换。

您应该使用inttypes.h的样式,但您自己定义符号。 例如:

#define PRIu8 "hu"
#define PRId8 "hd"
#define PRIx8 "hx"
#define PRIu16 "hu"
#define PRId16 "hd"
#define PRIx16 "hx"
#define PRIu32 "u"
#define PRId32 "d"
#define PRIx32 "x"
#define PRIu64 "llu" // or possibly "lu"
#define PRId64 "lld" // or possibly "ld"
#define PRIx64 "llx" // or possibly "lx"

找出你的机器并使用它们。 看看inttypes.h中的其他人,并找出你需要的数据。

这样,您的代码将更加便携。 自70年代末以来,我一直在做嵌入式系统工作。 相信我:可移植性很重要。

short int是最小的至少16位长,因此将值转换为unsigned short int并使用%hu打印它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM