如何将 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 ++函数,提示用户输入整数并将其转换为二进制并以相反的顺序打印[重复]