Getting Started with PHP 5 C++ and PHP Binary Transfer

WBOY
Release: 2016-07-28 08:27:46
Original
1267 people have browsed it

C++需要实现PHP端的:

bin2Hex

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

pack

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

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

<code>
QString Bin2Hex(char* data1,<span>int</span> len)
{
    QString <span>s</span> ;
    QString r ;

    <span>for</span> (<span>int</span><span>x</span>=<span>0</span>;<span>x</span><len;<span>x</span>++)
    {
        <span>s</span>.<span>sprintf</span>(<span>"<span>%02x</span>\0"</span>,data1[<span>x</span>]);


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

    <span>return</span> r;
}

QVariant QmlClass::readimg(QString file)
{

    QFile mfile(file);
    <span>if</span>(!mfile.<span>open</span>(QIODevice::ReadOnly) )
    {

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

    qDebug()<<<span>"文件存在"</span>;
    QByteArray  ar  = mfile.readAll();
    char * adr =ar.data();
    QString <span>m</span>= Bin2Hex(adr,ar.size()); 
    <span>return</span><span>m</span>;
}</code>
Copy after login
<code><span><span>function</span><span>uploadimg</span><span>()</span>
    {</span><span>var</span>  x = <span>new</span> XMLHttpRequest();

        x.onreadystatechange =<span><span>function</span><span>()</span>
        {</span><span>if</span>(x.readyState == <span>4</span>) {

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

                }


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

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

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template