[英]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.