很难的float转换问题 var_dump((string)3518.27); //string(7) "3518.27" 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var_dump((string)$MeterData);不对!socket_read返回的就是string 通过socket传来的4字节float怎样转成字符串?不对!socket_read返回的就是string————————————————————? tcp/ip协议传输数据一般是不按string方式进行的可php非得把socket_read搞成string.郁闷!在php搞什么字节、二进制真是寸步难行! 四个字节的float应该是按第1位 符号位(Sign) : 0代表正,1代表为负 第2-9位 指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储 后面23位 尾数部分(Mantissa):尾数部分 如果是这样的数据传过来 估计只能自己处理这个四字节的字符串来转换了 没想出什么好办法 LZ用 function hex2str($hexstring){ $str = ''; for($i=0; $i<strlen($hexstring); $i++){ $str .= sprintf("%02X",ord(substr($hexstring,$i,1))); } return $str;}转换个四字节的数据 (最好也贴一下实际应该表示的数值) 可php非得把socket_read搞成string----------------------------------这与搞成string没有关系。php用的是variant变量。你这样直接传float的内存结构过来当然要写程序自己转换。 $MeterData = socket_read(socket,4);list($t) = unpack('f', $MeterData);echo $t;或$ar = unpack('ft', $MeterData);echo $ar['t']; 关于运算符的问题。为毛这样? 数据库导入phpmyadmin出错的问题? crontab 每分执行一次设置? 单点登录 PHP冒泡排序问题 Discuz!论坛用户登录后,它的SESSION变量名是什么呢? 请问下面的问题怎么解决? 类的错误 关于循环输出数据库内容,现在脑子很乱,写不下去了,大家帮忙给我想下 session的问题 新手请教,如何判断查询结果为空 帮忙解决下数组的问题!(菜鸟问..)
不对!socket_read返回的就是string
不对!socket_read返回的就是string
————————————————————
?
可php非得把socket_read搞成string.郁闷!
在php搞什么字节、二进制真是寸步难行!
第2-9位 指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储
后面23位 尾数部分(Mantissa):尾数部分
如果是这样的数据传过来 估计只能自己处理这个四字节的字符串来转换了 没想出什么好办法
function hex2str($hexstring)
{
$str = '';
for($i=0; $i<strlen($hexstring); $i++){
$str .= sprintf("%02X",ord(substr($hexstring,$i,1)));
}
return $str;
}转换个四字节的数据 (最好也贴一下实际应该表示的数值)
----------------------------------
这与搞成string没有关系。
php用的是variant变量。你这样直接传float的内存结构过来当然要写程序自己转换。
echo $t;
或
$ar = unpack('ft', $MeterData);
echo $ar['t'];