微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当 MSB 位等于 0 时,如何以 HEX 格式打印它们

如何解决当 MSB 位等于 0 时,如何以 HEX 格式打印它们

我需要使用 HEX 格式打印变量。 问题是当我的变量很小时,MSB 等于 0,所以它们不会被打印出来。

ex: uint16_t var = 10; // (0x000A)h

-> 我需要打印 "000A" 但无论我做什么它总是只打印 'A'

我怎样才能让它工作?

解决方法

您可以向宽度说明符添加前导 0 以强制 printf 添加前导零(至少,您可以在 C 和 C++ 中 - 而不是完全确定使用该功能的其他语言)。

例如,在 C 中,如下:

#include <stdio.h>
#include <stdint.h>

int main()
{
    uint16_t a = 10; // 0xA
    printf("%04X\n",a);
    //        ^ width specifier: display as 4 digits
    //       ^ this signals to add leading zeros to pad to at least "n" digits
    return 0;
}

将显示:

000A

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。