不使用'printf'是否可以将整数转换为十六进制?如果所有的值都放在变量本身和一些带有解释的示例代码中,效果最好。
kknvjkwl1#
十进制和十六进制系统只是表示int值的方法。在某种程度上,“它已经是十六进制了”。
2ledvvac2#
我认为可以在stdlib.h中使用itoa:第一个月文件:itoa documentation
wrrgggsh3#
当然有可能,只要想想printf本身最初是如何实现的...我不会给予你一个完整的解决方案,只有提示,根据这些提示,你可以在代码中试验实现:一个8位数可以表示为2个十六进制数字,分别包含高4位和低4位。要获取这些位,可以使用移位(>>)和掩码(&)运算符。一旦有了4位值,就可以使用if序列,或者(作为更优雅的解决方案)通过索引到字符数组中,轻松地将其Map到正确的十六进制数字。
printf
>>
&
if
brgchamk4#
Hexdecival vs Decimal vs Binary..etc..只是表示同一个数字的不同基数。printf不会转换你的数字,它会生成一个十六进制字符串表示你的数字。如果你想实现自己的study,如何在十进制和十六进制之间进行转换。
ct2axkht5#
是的,在不使用“printf”系列格式化函数的情况下,将整数转换为十六进制字符串绝对是可能的。
你可以通过将数字从10进制(我们认为是10进制)转换为16进制(十六进制)并打印出这种表示形式的数字(0-9A-F)来编写这样一个函数,这需要你对the bases we use to represent numbers进行大量的思考。
0-9A-F
9lowa7mx6#
如果你是指在C语言中将一个int显示为十六进制数,那么你必须写一个函数来做与printf相同的事情。如果您指的是强制转换或内部表示,则不能这样做,因为十六进制不是数据类型。
hsvhsicv7#
一个int是以二进制数的形式存储在计算机中的,事实上,由于hex可以解释为写二进制的简写,你甚至可以说,当你使用printf打印出一个十进制数时,它必须从 * hex * 转换为 * decimal。
int
sbtkgmzw8#
这是一个将字符数组转换为十六进制字符串格式示例
#include <stdio.h> #include <stdint.h> #include <stdlib.h> unsigned char d=255; char hex_array[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; char *array_to_hex_string(uint8_t data[],int size); char test_data[3] = {'0',188,255}; int main() { printf("%s",array_to_hex_string(test_data,3)); return 0; } char *array_to_hex_string(uint8_t data[],int size){ int i,j; char *hex_string = (char *)malloc((2*size) * sizeof(data[0])); for(i=0;i<size;i++){ hex_string[j] = hex_array[(data[i]>>4)]; hex_string[j+1] = hex_array[(data[i] & 15)]; j +=2; } return (char *)hex_string; }
mv1qrgav9#
cout << hex << intvar << endl;
但是如果你想要一个给你的家庭作业打A的答案,你就不会那么幸运了:)
9条答案
按热度按时间kknvjkwl1#
十进制和十六进制系统只是表示int值的方法。在某种程度上,“它已经是十六进制了”。
2ledvvac2#
我认为可以在stdlib.h中使用itoa:
第一个月
文件:itoa documentation
wrrgggsh3#
当然有可能,只要想想
printf
本身最初是如何实现的...我不会给予你一个完整的解决方案,只有提示,根据这些提示,你可以在代码中试验实现:
一个8位数可以表示为2个十六进制数字,分别包含高4位和低4位。要获取这些位,可以使用移位(
>>
)和掩码(&
)运算符。一旦有了4位值,就可以使用
if
序列,或者(作为更优雅的解决方案)通过索引到字符数组中,轻松地将其Map到正确的十六进制数字。brgchamk4#
Hexdecival vs Decimal vs Binary..etc..只是表示同一个数字的不同基数。printf不会转换你的数字,它会生成一个十六进制字符串表示你的数字。如果你想实现自己的study,如何在十进制和十六进制之间进行转换。
ct2axkht5#
是的,在不使用“printf”系列格式化函数的情况下,将整数转换为十六进制字符串绝对是可能的。
你可以通过将数字从10进制(我们认为是10进制)转换为16进制(十六进制)并打印出这种表示形式的数字(
0-9A-F
)来编写这样一个函数,这需要你对the bases we use to represent numbers进行大量的思考。9lowa7mx6#
如果你是指在C语言中将一个int显示为十六进制数,那么你必须写一个函数来做与printf相同的事情。
如果您指的是强制转换或内部表示,则不能这样做,因为十六进制不是数据类型。
hsvhsicv7#
一个
int
是以二进制数的形式存储在计算机中的,事实上,由于hex可以解释为写二进制的简写,你甚至可以说,当你使用printf打印出一个十进制数时,它必须从 * hex * 转换为 * decimal。sbtkgmzw8#
这是一个将字符数组转换为十六进制字符串格式示例
mv1qrgav9#
但是如果你想要一个给你的家庭作业打A的答案,你就不会那么幸运了:)