首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP将Byte转换为浮点值

PHP将Byte转换为浮点值
EN

Stack Overflow用户
提问于 2022-09-05 11:42:36
回答 1查看 41关注 0票数 1

我正在通过(modbusTCP)连接读取值。我用以下数据返回一个数组:

代码语言:javascript
复制
print_r($recData) ;
Output: Array ( [0] => 67 [1] => 100 [2] => 33 [3] => 72 )

如何将值作为浮点返回?因此,我应该得到以下信息: 229.718

我的密码工作..。$recData shout中的数据是一个浮动大端值

代码语言:javascript
复制
$i = ($recData[0]<<24) + ($recData[1]<<16) + ($recData[2]<<8) + ($recData[3]);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-05 15:10:40

您可以像这样在PHP中转换它。

代码语言:javascript
复制
$number = [67, 100, 33, 72];
$strHex = implode('', array_map('dechex', $number));

$v = hexdec($strHex);
$x = ($v & ((1 << 23) - 1)) + (1 << 23) * ($v >> 31 | 1);
$exp = ($v >> 23 & 0xFF) - 127;
$float = $x * pow(2, $exp - 23);

echo round($float, 3);

给出

代码语言:javascript
复制
228.13
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73608836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档