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

问题描述

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

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

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

谢谢。

解决方法

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

这很简单:

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

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

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