C++需要实现PHP端的:
bin2Hex
函数,PHP通过这种类型的字符串调用:
pack
转换成PHP能识别的2进制数据。
C++需要做的是实现一个bin2hex,其实只是把c++读取的2进制数据当成byte数组,把每一位转换成16进制字符串就可以了。Qt中使用sprintf无法限制2位长度,因此sprintf之后判断长度为8则截取最后3个字符串,包含了/0终止符
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | <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>x++)
{
<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> return </span><span> "" </span>;
}
qDebug() "文件存在" ;
QByteArray ar = mfile.readAll();
char * adr =ar.data();
QString <span>m</span>= Bin2Hex(adr,ar.size());
<span> return </span><span>m</span>;
}</len></code>
|
Copier après la connexion
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <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>
x.setRequestHeader(<span> "Content-Type" </span>,<span> "application/x-www-form-urlencoded" </span>);
x.send(d);
}</code>
|
Copier après la connexion
1 2 3 4 5 | <code><span><span><?php </span><span> $filename </span>=<span> "teststream.jpg" </span>;<span>
<span> echo </span><span> $data_buff </span>;
<span> $jpg </span> = pack(<span> "H*" </span>,<span> $data_buff </span>);<span>
fwrite(<span> $file </span>,<span> $jpg </span>);<span>
fclose(<span> $file </span>);<span>
|
Copier après la connexion
').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教程有兴趣的朋友有所帮助。