【问题标题】:Printf and hex valuesPrintf 和十六进制值
【发布时间】:2009-11-20 18:44:33
【问题描述】:

所以,我有一个 __be16 类型的值(2 个字节)。在十六进制中,该值表示为十进制的 0x0800 或 2048。 (16^2 * 8)

所以,当我打印这个时;我这样做:

printf("%04X", value); //__be16 value;
                      //Print a hex value of at least 4 characters, no padding.

输出: 0008

printf("%i", value); //Print an integer.

输出: 8

我应该得到 分别是0800和2048,我做错了什么?

【问题讨论】:

    标签: c++ c string printf formatting


    【解决方案1】:

    我猜value 是 8。:-)

    您使用的是 x86 等小端机器吗?我猜be16 的意思是这个值是大端的,你需要交换字节。

    【讨论】:

    • 交换字节顺序可以这样,顺便说一句:codeguru.com/forum/showthread.php?t=292902
    • 啊,ntos(value) 成功了。我猜这不是打印 MAC 地址(以太网标头)的问题,因为我一次只打印每个 MAC 1 个短(2 个字节),从而完全避免字节顺序?
    • 猜得好!而且我也觉得我正在通过阅读 SO 慢慢发展超自然能力。
    猜你喜欢
    • 2013-01-21
    • 2015-12-09
    • 1970-01-01
    • 2018-07-26
    • 1970-01-01
    • 2017-01-09
    • 2011-12-09
    • 1970-01-01
    相关资源
    最近更新 更多