【发布时间】:2014-03-01 10:01:53
【问题描述】:
我正在创建一个 C 程序来将十六进制转换为浮点数并将浮点数转换为十六进制。
我已经想到了解决方案,但我有几个问题想问。
我要解决的方法是:
首先通过扫描数组并检查字符串输入的前2个索引是否为0x,将输入识别为浮点数或十六进制,然后它是十六进制。 我现在的问题是,我可以编写这样的代码吗:
char* string;
scanf(%s, string);
if(string[0] == '0' && string[1] == 'x')
{
printf("The number you've entered is a hexadecimal and the corresponding float is:");
在这里,我真的不知道 C 中有哪些占位符,例如 %x。 %f 是否适用于字符串?
我尝试这样做,但由于某种原因,我的编译器没有读取条件并跳过它。 另外,我知道 printf() 适用于双倍。因此,如果我通过 (unsignedint) 转换双精度,则可以将浮点数转换为十六进制:
float f;
printf("Enter float");
scanf("%f", &f);
printf("hex is %x", *(unsigned int*)&f);
这工作得很好。
在我必须编写的程序中,如果十六进制参数超出范围,我的程序必须产生错误。(因为十六进制数字太多)。但这通常意味着什么?基于什么? IEEE 754 格式? 32位数字?
谢谢。
【问题讨论】:
标签: c floating-point hex