Tag:

用C语言解释32位无符号长单精度IEEE-754浮点数

我使用的是Microchip的XC32编译器,它基于标准的C编译器。 我正在从RS485网络上的设备读取32位值,并将其存储在unsigned long中,我将其命名为DWORD。 即 typedef DWORD unsigned long; 就目前而言,当我将此值转换为浮点值时,我得到的值基本上是它的整数表示的浮点版本,而不是正确的IEEE-754解释浮点数。 即 DWORD dword_value = readValueOnRS485(); float temp = (float)dword_value; 这里,dword_value会以hex格式表示为0x4366C0C4,作为十进制表示为1130807492,因此将其类型转换为float只会给我1.130807492 * 10 ^ 9或1130807492.0这不是我想要的。 我想要单精度IEEE-754表示,它给我一个浮点值230.75299072265625 所以显然,对浮动进行类型转换对我来说不起作用。 我需要一种可以转换此forms的方法。 我在XC32库中看了一遍,但找不到任何东西。 有没有人知道一个预定义的方法,为我正确地解释了这个? 或者可能有一些建议的方法我可以写? 我试图避免为这个特定任务编写自己的代码,因为我担心如果C已经有了这个function,我找不到有效的解决方案。 有趣的是,如果我对char *执行此操作,则该值在该char *上正确表示为230.75: sprintf(random_char_pointer, “%.2f, dword_value); 这里打印random_char_pointer到屏幕给我230.75所以sprintf必须正确处理解释。 因此我假设C中已经存在某些东西。 有人可以帮忙吗?

给定一组点,我如何找到彼此最远的两个点?

可能重复: 最大线性尺寸2d点集 我可以计算每个点之间的距离并取最大值,但是当有大(> 1000)点数时,这听起来不是一种非常有效的方法。 注意:这适用于iPhone,因此我没有大量的处理能力。