var_dump((string)3518.27);  //string(7) "3518.27"

解决方案 »

  1.   

    var_dump((string)$MeterData);
    不对!socket_read返回的就是string
      

  2.   

    通过socket传来的4字节float怎样转成字符串?
    不对!socket_read返回的就是string
    ————————————————————
      

  3.   

    tcp/ip协议传输数据一般是不按string方式进行的
    可php非得把socket_read搞成string.郁闷!
    在php搞什么字节、二进制真是寸步难行!
      

  4.   

    四个字节的float应该是按第1位 符号位(Sign) : 0代表正,1代表为负 
    第2-9位 指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储 
    后面23位 尾数部分(Mantissa):尾数部分 
    如果是这样的数据传过来 估计只能自己处理这个四字节的字符串来转换了 没想出什么好办法
      

  5.   

    LZ用 
    function hex2str($hexstring)
    {
    $str = '';
    for($i=0; $i<strlen($hexstring); $i++){
    $str .= sprintf("%02X",ord(substr($hexstring,$i,1)));
    }
    return $str;
    }转换个四字节的数据 (最好也贴一下实际应该表示的数值)
      

  6.   

    可php非得把socket_read搞成string
    ----------------------------------
    这与搞成string没有关系。
    php用的是variant变量。你这样直接传float的内存结构过来当然要写程序自己转换。
      

  7.   

    $MeterData = socket_read(socket,4);list($t) = unpack('f', $MeterData);
    echo $t;

    $ar = unpack('ft', $MeterData);
    echo $ar['t'];