PHP解析ELA温度传感器原始数据
我已经成功地从下面的原始数据转换了正温度数据PHP解析ELA温度传感器原始数据,php,parsing,temperature,raw-data,Php,Parsing,Temperature,Raw Data,我已经成功地从下面的原始数据转换了正温度数据 array ( 'timestamp' => '2020-06-11T11:09:21.335Z', 'type' => 'Unknown', 'mac' => 'F64BB46181EF', 'bleName' => 'P RHT 900350', 'rssi' => -63, 'rawData' => '02010605166E2AC90A04166F2A240D095020524854203930303335
array (
'timestamp' => '2020-06-11T11:09:21.335Z',
'type' => 'Unknown',
'mac' => 'F64BB46181EF',
'bleName' => 'P RHT 900350',
'rssi' => -63,
'rawData' => '02010605166E2AC90A04166F2A240D09502052485420393030333530',
)
但是当我得到负的温度值时,它会使温度值增加600以上
这是负温度原始数据
array (
'timestamp' => '2020-07-03T10:05:53.049Z',
'type' => 'Unknown',
'mac' => 'EDF2F589DCAE',
'bleName' => 'P RHT 900351',
'rssi' => -79,
'rawData' => '02010605166E2AB4FA04166F2A310D09502052485420393030333531',
)
我已经询问了他们所说的支持团队
你必须做一个2的补码,将所有的位颠倒过来,然后在二进制中加1。
我假设输出正常,但对于32位数字,此代码检查高位是否已设置(使用
&32768
),如果已设置,则将该数字与65535(所有16位已设置)进行异或,将其反转,然后仅添加1(结果将成为-ve数字)
其结果为-13.56
array (
'timestamp' => '2020-07-03T10:05:53.049Z',
'type' => 'Unknown',
'mac' => 'EDF2F589DCAE',
'bleName' => 'P RHT 900351',
'rssi' => -79,
'rawData' => '02010605166E2AB4FA04166F2A310D09502052485420393030333531',
if ( $c_cut & 32768 ) {
$c_cut = -(($c_cut ^ 65535)+1);
}