不使用'printf'将Int转换为十六进制(C编程)

时间:2011-08-24 15:19:02

标签: c

是否可以在不使用'printf'的情况下将Int转换为十六进制?

最好是将所有值放在变量本身和一些带有解释的示例代码中。

8 个答案:

答案 0 :(得分:4)

十进制和十六进制系统只是表达int值的方法。在某种程度上“它已经是十六进制”。

答案 1 :(得分:3)

我认为你可以在 stdlib.h 中使用itoa:

char * itoa ( int value, char * str, int base ); or sprintf(str,"%x",value);

文档:itoa documentation

答案 2 :(得分:0)

当然有可能。试想一下printf本身最初是如何实现的......

我不会给你一个完整的解决方案,只提供一些提示,根据这些提示你可以在代码中试验实现:

8位数可以表示为2个十六进制数,分别包含高4位和低4位。要获得这些位,可以使用位移(>>)和掩码(&)运算符。

一旦有了4位值,就可以使用if s序列轻松地将其映射到正确的十六进制数字,或者(作为更优雅的解决方案)通过索引到字符数组。

答案 3 :(得分:0)

Hexdecival vs Decimal vs Binary..etc ..只是表示相同数字的不同基数。 printf不会转换您的号码,它会生成您的号码的十六进制字符串表示形式。如果你想实现自己的study如何在十进制和十六进制基数之间进行转换。

答案 4 :(得分:0)

,绝对可以在不使用“printf”系列格式化函数的情况下将整数转换为十六进制字符串。

您可以通过将数字从base-10(我们考虑它)转换为base-16(十六进制)并打印该表示中的数字(0-9A-F)来编写这样的函数。这需要您考虑很多the bases we use to represent numbers

答案 5 :(得分:0)

如果你指的是在C中将int显示为十六进制数,那么你必须编写一个与printf相同的函数。

如果您指的是强制转换或内部表示,则无法完成,因为十六进制不是数据类型。

答案 6 :(得分:0)

int作为二进制数存储在您的计算机中。事实上,由于十六进制可以解释为写二进制的简写,你甚至可以说当你使用printf打印出一个十进制数时,必须将 hex 转换为十进制。

答案 7 :(得分:-3)

cout << hex << intvar << endl;

但是如果你想要一个给你做作业A的答案,你就不会幸运了。)