suncat0504 发表于 2024-7-24 19:09

printf的16进制输出问题

最近做的一个程序中,想使用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吧!

dspmana 发表于 2025-1-3 20:10

使用的格式字符串不正确。            

linfelix 发表于 2025-1-3 20:58

编译器设置可能会影响printf的行为。

sdlls 发表于 2025-1-3 22:31

编译器或环境设置有问题            

benjaminka 发表于 2025-1-4 01:33

对于 %02X,应该传递一个 无符号整数(如 unsigned int)。如果传递的是字符类型(如 char),可能会导致意想不到的行为,尤其是在不同平台上 char 可能有符号或无符号。

uptown 发表于 2025-1-4 07:21

缓冲区或输出重定向问题            

pmp 发表于 2025-1-5 09:39

通过串口或其他非标准输出方式查看结果,可能存在传输或显示的问题。

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;
}

kmzuaz 发表于 2025-1-5 12:31

需要检查运行时库是否完整和支持所有的printf功能。

burgessmaggie 发表于 2025-1-5 15:06

用的编译器支持标准的C语言格式说明符。大多数现代编译器如GCC、Clang和MSVC都支持。

wangdezhi 发表于 2025-1-5 16:43

%02X 是正确的格式说明符            

tabmone 发表于 2025-1-5 18:28

应该使用 %02X 或 %02x

geraldbetty 发表于 2025-1-5 20:54

参数类型不匹配            

sdCAD 发表于 2025-1-7 13:32

考虑编写一个简单的测试程序来单独测试 printf 的行为

xiaoyaodz 发表于 2025-1-7 14:29

printf 输出的值是正确的。

jtracy3 发表于 2025-1-7 14:53

%02X中的02表示最小宽度为2,不足两位时补0,X表示输出大写的16进制数。

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;
}
页: [1] 2 3
查看完整版本: printf的16进制输出问题