是否可以在不使用'printf'的情况下将Int转换为十六进制?
最好是将所有值放在变量本身和一些带有解释的示例代码中。
答案 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的答案,你就不会幸运了。)