问题描述
我需要将一个 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。