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

我使用的是Microchip的XC32编译器,它基于标准的C编译器 .

我正在从RS485网络上的设备读取32位值并将其存储在unsigned long中,我将其命名为DWORD .

typedef DWORD unsigned long;

就目前而言,当我将此值转换为float时,我得到的值基本上是它的整数表示的浮点版本,而不是正确的IEEE-754解释浮点数 .

DWORD dword_value = readValueOnRS485();

float temp = (float)dword_value;

这里,dword_value将以十六进制格式表示为0x4366C0C4,作为十进制将表示为1130807492,因此对浮点数的类型转换只是给我1.130807492 * 10 ^ 9或1130807492.0这不是我想要的 .

我想要单精度IEEE-754表示,它给我一个浮点值230.75299072265625

显然,对浮动进行类型转换对我来说不起作用 . 我需要一种可以转换此形式的方法 . 我在XC32库中看了一遍,但找不到任何东西 .

有没有人知道一个预定义的方法,为我正确地做出这种解释?或者可能有一些建议的方法我可以写?我试图避免为这个特定任务编写自己的代码,因为我担心如果C已经有了这个功能,我找不到有效的解决方案 .

有趣的是,如果我对char *执行此操作,则该值将在char *上正确表示为230.75:

sprintf(random_char_pointer, "%.2f, dword_value);

在这里打印random_char_pointer到屏幕给我230.75所以sprintf必须正确处理解释 . 因此我假设C中已经存在某些东西 . 有人可以帮忙吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值