今天在使用php进行FMTCP通信的时候发现发送的数据是浮点数的16进制byte序列 因此发布两个函数 以防忘记
/**
* 16进制字符串转浮点数*/
private function hexToFloat32($strHex) {
$binarydata32 = pack('H*',$strHex);
$float32 = unpack("f", $binarydata32);
return $float32;
}
/**
* 浮点数转16进制
*/
private function float32ToHex($float) {
$float32 = pack("f", $float);
$binarydata32 =unpack('H*',$float32);
return $this->_strrev($binarydata32[1]);
}
/**
* 浮点数字符串逆序分割
*/
private function _strrev($s, $x = 2) {
if ($x <= 1) {
return strrev($s);
} else {
return (implode(array_reverse(array_map('implode', array_chunk(str_split($s), $x)))));
}
}