我正在通过(modbusTCP)连接读取值。我用以下数据返回一个数组:
print_r($recData) ;
Output: Array ( [0] => 67 [1] => 100 [2] => 33 [3] => 72 )如何将值作为浮点返回?因此,我应该得到以下信息: 229.718
我的密码工作..。$recData shout中的数据是一个浮动大端值
$i = ($recData[0]<<24) + ($recData[1]<<16) + ($recData[2]<<8) + ($recData[3]);发布于 2022-09-05 15:10:40
您可以像这样在PHP中转换它。
$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);给出
228.13https://stackoverflow.com/questions/73608836
复制相似问题