打印
[开发生态]

printf的16进制输出问题

[复制链接]
1234|37
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
suncat0504|  楼主 | 2024-7-24 19:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近做的一个程序中,想使用pringtf输出格式化的16进制数据,但结果不对。比如我想输出2位的16进制格式,不足的补位0,比如输出A为0A,在使用%02X时,结果不足两位的,输出只有1位,没有补0,是什么原因?

使用特权

评论回复
沙发
LEDyyds| | 2024-7-25 10:31 | 只看该作者
不应该啊,看起来没问题啊

使用特权

评论回复
板凳
trucyw| | 2024-7-25 19:05 | 只看该作者
看起来是没有问题
printf

使用特权

评论回复
地板
Sunriver_Yao| | 2024-12-30 11:55 | 只看该作者
那就sprintf吧!

使用特权

评论回复
5
dspmana| | 2025-1-3 20:10 | 只看该作者
使用的格式字符串不正确。              

使用特权

评论回复
6
linfelix| | 2025-1-3 20:58 | 只看该作者
编译器设置可能会影响printf的行为。

使用特权

评论回复
7
sdlls| | 2025-1-3 22:31 | 只看该作者
编译器或环境设置有问题              

使用特权

评论回复
8
benjaminka| | 2025-1-4 01:33 | 只看该作者
对于 %02X,应该传递一个 无符号整数(如 unsigned int)。如果传递的是字符类型(如 char),可能会导致意想不到的行为,尤其是在不同平台上 char 可能有符号或无符号。

使用特权

评论回复
9
uptown| | 2025-1-4 07:21 | 只看该作者
缓冲区或输出重定向问题              

使用特权

评论回复
10
pmp| | 2025-1-5 09:39 | 只看该作者
通过串口或其他非标准输出方式查看结果,可能存在传输或显示的问题。

使用特权

评论回复
11
abotomson| | 2025-1-5 11:35 | 只看该作者
#include <stdio.h>

int main() {
    unsigned int value = 0xA; // 十六进制A
    printf("%02X\n", value);  // 输出0A

    value = 0xF; // 十六进制F
    printf("%02X\n", value);  // 输出0F

    value = 0x10; // 十六进制10
    printf("%02X\n", value);  // 输出10

    return 0;
}

使用特权

评论回复
12
kmzuaz| | 2025-1-5 12:31 | 只看该作者
需要检查运行时库是否完整和支持所有的printf功能。

使用特权

评论回复
13
burgessmaggie| | 2025-1-5 15:06 | 只看该作者
用的编译器支持标准的C语言格式说明符。大多数现代编译器如GCC、Clang和MSVC都支持。

使用特权

评论回复
14
wangdezhi| | 2025-1-5 16:43 | 只看该作者
%02X 是正确的格式说明符              

使用特权

评论回复
15
tabmone| | 2025-1-5 18:28 | 只看该作者
应该使用 %02X 或 %02x

使用特权

评论回复
16
geraldbetty| | 2025-1-5 20:54 | 只看该作者
参数类型不匹配              

使用特权

评论回复
17
sdCAD| | 2025-1-7 13:32 | 只看该作者
考虑编写一个简单的测试程序来单独测试 printf 的行为

使用特权

评论回复
18
xiaoyaodz| | 2025-1-7 14:29 | 只看该作者
printf 输出的值是正确的。

使用特权

评论回复
19
jtracy3| | 2025-1-7 14:53 | 只看该作者
%02X中的02表示最小宽度为2,不足两位时补0,X表示输出大写的16进制数。

使用特权

评论回复
20
wangdezhi| | 2025-1-7 15:49 | 只看该作者
#include <stdio.h>

int main() {
    unsigned int value = 0xA; // 十六进制A
    printf("Value: %u, Hex: %02X, Hex (lower): %02x\n", value, value, value);

    return 0;
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:大连伊飞特信息技术有限公司软件工程师
简介:本人于1993年毕业于大连理工大学。毕业后从事单片机开发工作5年,之后转入软件开发工作至今。

151

主题

4002

帖子

5

粉丝