【发布时间】:2014-12-09 07:41:38
【问题描述】:
我有以下结构
struct data {
uint64_t addr:50;
};
如果我想以十六进制格式打印addr 的值,我应该使用哪个格式说明符?
【问题讨论】:
-
使用
%x说明符有什么问题吗?但是,它不会为您提供bitfield变量的 exact 值。它会考虑datatype。也许您可以在打印之前使用mask过滤所需的位。 -
50 位值没有格式说明符。你必须自己做。
-
或者......根本不使用位字段,使用 uint64_t。请注意,位字段不能可靠地用于任何东西,而是作为一大块布尔标志的容器。例如,see this。
标签: c formatting printf bit-fields