时间:2021-07-01 10:21:17 帮助过:2人阅读
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教程有兴趣的朋友有所帮助。