如何将 int 转换为十六进制数并将其打印为 c 中的 3 位数字? [复制]

Posted

技术标签:

【中文标题】如何将 int 转换为十六进制数并将其打印为 c 中的 3 位数字? [复制]【英文标题】:How can i convert an int to a hexadecimal number and print it as a 3 digit number in c? [duplicate] 【发布时间】:2021-05-27 06:16:51 【问题描述】:

我需要将 int 编码为十六进制数字,我知道 int 不会占用超过 3 个十六进制数字。如果需要,我需要在数字上添加零。这样 7A 将打印为 07A。

所以我需要编写一个函数,可以将 int 转换为十六进制并在数字少于 3 个十六进制数字时添加零。

我试图让它工作,但我只找到了将 int 转换为表示转换后的十六进制数的字符串的函数。

谢谢。

【问题讨论】:

printf 可以免费为您做。检查 %x 说明符如何与宽度修饰符一起工作 int num = 0x7A; printf("0x%03X\n", num); 不要告诉我们您已经尝试过,而是向我们展示您尝试过的内容。 【参考方案1】:

由于基本转换的概念仅在数字的文本表示的上下文中才有意义,我假设您的意思是“我想将 int 表示为 3 位十六进制数字,如果至少错了 3 位数”。

这很简单:

int myValue = /*whatever*/;
char strNum[10];

snprintf(strNum, 10, "%.3X", myValue);

strNum 现在将包含myValue 的十六进制表示。如果长度小于三位数,则会用零填充,直到长度为 3。

【讨论】:

如果我需要使用 fprintf 将其打印到文件中怎么办?我还能使用 snprintf 或存储 snprintf 的结果吗? 在这种情况下直接使用fprintf。我使用snprintf 向您展示如何将十六进制表示保存到字符串变量中 只替换fprintf中的snprintf?因为它不起作用 @DvirPeretz ;替换函数名是不够的。查看fprintf 的文档并了解如何使用它 阅读文档并尝试 u_int16_t x = num; fprintf(文件,"%03X",x);这行得通,谢谢。

以上是关于如何将 int 转换为十六进制数并将其打印为 c 中的 3 位数字? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将十六进制字符串转换为C中的二进制文件

编写一个c ++函数,提示用户输入整数并将其转换为二进制并以相反的顺序打印[重复]

将整数向量打印为十进制数

Arduino:将字符串十六进制“#FFFFFF”转换为 3 int

在C语言中如何将10进制转换成16进制?

如何将表示二进制的 int 向量转换为表示十进制数的 int 向量? C++