当前位置:Gxlcms > PHP教程 > PHP入门5C++和PHP二进制传输

PHP入门5C++和PHP二进制传输

时间:2021-07-01 10:21:17 帮助过:2人阅读

C++需要实现PHP端的:

bin2Hex

函数,PHP通过这种类型的字符串调用:

pack

转换成PHP能识别的2进制数据。

C++需要做的是实现一个bin2hex,其实只是把c++读取的2进制数据当成byte数组,把每一位转换成16进制字符串就可以了。Qt中使用sprintf无法限制2位长度,因此sprintf之后判断长度为8则截取最后3个字符串,包含了/0终止符


QString Bin2Hex(char* data1,int len)
{
    QString s ;
    QString r ;

    for (intx=0;xx++)
    {
        s.sprintf("%02x\0",data1[x]);


        if(s.length()>2)
        {
            s=s.mid(6,8);
        }
        r.append(s);
    }

    return r;
}

QVariant QmlClass::readimg(QString file)
{

    QFile mfile(file);
    if(!mfile.open(QIODevice::ReadOnly) )
    {

        qDebug()<<"文件不存在";
        return"";
    }

    qDebug()<<"文件存在";
    QByteArray  ar  = mfile.readAll();
    char * adr =ar.data();
    QString m= Bin2Hex(adr,ar.size()); 
    returnm;
}
functionuploadimg()
    {var  x = new XMLHttpRequest();

        x.onreadystatechange =function()
        {if(x.readyState == 4) {

                if(x.status == 200) {
                    console.log("The server replied with: " + x.responseText);
                    txt.text = x.responseText;

                }


            }
        };
        var xxx =newObject;
        var d=myapp.readimg(":/1.jpg");
        console.log(typeof d)
        x.open("POST","http://localhost/mycode/Test/reg.php",true);
        console.log(d)
        //post请求要自己设置请求头
         x.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        x.send(d);
    }
$filename="teststream.jpg";//要生成的图片名字 $data_buff=file_get_contents("php://input"); 
  echo$data_buff;
  $jpg = pack("H*",$data_buff);//得到post过来的二进制原始数据 $file = fopen("pic/".$filename,"wb");//打开文件准备写入
  fwrite($file,$jpg);//写入
  fclose($file);//关闭?>

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('
  • ').text(i)); }; $numbering.fadeIn(1700); }); });

    以上就介绍了 PHP入门5 C++和PHP二进制传输,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

  • 人气教程排行