提问人:ASWIN 提问时间:8/8/2023 最后编辑:chqrlieASWIN 更新时间:8/9/2023 访问量:255
如何在 C 中以“0x”格式打印十六进制值
How to print hexadecimal values in "0x" format in C
问:
我正在尝试在 C 中打印十六进制值。
一个简单的已知程序,用于打印十六进制值...(使用或格式说明符)%x
%X
#include<stdio.h>
int main()
{
unsigned int num = 10;
printf("hexadecimal value of %u is %x\n", num, num);
}
输出:hexadecimal value of 10 is a
我需要以十六进制格式获取输出,而不是获取输出,而不是以十六进制格式获取输出(如果对用户来说更明确,则中的值以十六进制格式表示)。a
0xa
答:
2赞
chqrlie
8/8/2023
#1
有 2 种方法可以实现此目的:
使用 ,这确保 even 被打印为 。 是打印小写数字和大写十六进制数字的唯一解决方案。但请注意,您不能使用 width 前缀,因为填充空格将出现在 和 数字之间: 将输出
0x%x
0
0x0
0x%X
x
0x
printf(">0x%4x<", 100)
>0x 64<
using ,如果数字不为零且与宽度前缀兼容,则添加前缀: 将输出 ,但两者都 和 将输出 。
%#x
0x
printf(">%#6x<", 100)
> 0x64<
printf(">%#06x<", 100)
printf(">0x%04x<", 100)
>0x0064<
2赞
nielsen
8/8/2023
#2
其他答案很好地解释了如何获得“0x”前缀。
我想补充一点,十六进制数字通常使用固定宽度(例如 2 或 4 位数字)。这可以通过以下方式获得:
printf("0x%04x", num);
这将打印,例如
0x0054
评论
%#x
也有效:见 en.cppreference.com/w/c/io/fprintfo, u, x, X
#
%d
int
%u
%d
unsigned int num = 10;
printf("%u %#x\n", num, num);
unsigned int